- From: Allen Razdow <arazdow@mathsoft.com>
- Date: Mon, 5 May 2003 08:42:24 -0400
- To: "'Doug Schepers'" <doug@schepers.cc>, www-svg@w3.org
Thanks Doug, I admit to being more of a potential user keeping a weather-eye on the SVG design discussions, than an SVG expert. But perhaps the view of an interested "outsider" can be useful! Mathml notwithstanding, consider displaying mathematical equations as an example of careful placement of strings within graphical elements such as fraction-bars, square-brackets and integral signs. This sort of precision requires knowing the bounding-box, baselines, and the offsets of particular characters in strings. When I last inquired about this, it seemed that the only way to get true text metrics was to display them and then use scripts to read actual size information via DOM. Folks at SchemaSoft that had written a Mathml to SVG converter confirmed this back then. I'm not sure what specific feature to suggest, but a category of measurement functions such as X-OFFSET-OF-SUBSTRING("foo", textEntityID) placed somewhere in SVG, would do the trick, though probably requiring some restrictions based on sequence of rendering. Certainly, the accurate embedding of text in graphics will be a common requirement in many commercial uses of SVG. So long as the SVG community is satisfied that this requirement is met, I'm happy :) -Allen -----Original Message----- From: Doug Schepers [mailto:doug@schepers.cc] Sent: Monday, May 05, 2003 12:39 AM To: www-svg@w3.org Subject: RE: baseline problem Hi, Allen- I'm not sure that is pertinent. Of course, you could make a font with ascenders twice as high as capital letters (for whatever reson... maybe it's a funky now-Western font or something, or it has accent marks), but since 'baseline-shift' can take units in percentages, it should be able to cope in the way that Dario wants 'alignment-baseline="top"' to do. That is, if I understand what Dario is trying to do... maybe they want to make it so that all the letters are aligned by their top edge --along the height of the tallest ascender-- instead of their bottom (sans descenders)? If you wanted to do that, you could make your own custom font. I made a simple font to show what I mean... even with an uncommonly tall ascender, the results are still pretty acceptable when you use 'baseline-shift:-100%;'. <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> <defs > <font horiz-adv-x="1038" ><font-face font-family="TallAscender" units-per-em="2048" panose-1="2 11 6 3 3 8 4 2 2 4" ascent="1956" descent="-483" alphabetic="0" /> <missing-glyph horiz-adv-x="1229" d="M102 -362V1444H1126V-362H102ZM217 -248H1012V1329H217V-248Z" /> <glyph unicode=" " glyph-name="space" horiz-adv-x="651" /> <glyph unicode="A" glyph-name="A" horiz-adv-x="1401" d="M700 1294L426 551H975L700 1294ZM586 1493H815L1384 0H1174L1038 383H365L229 0H16L586 1493Z" /> <glyph unicode="f" glyph-name="f" horiz-adv-x="721" d="M760 1956 V1803 H584 Q485 1803 447 1763 T408 1519 V1120 H711 V977 H408 V0 H223 V977 H47 V1120 H223 V1598 Q223 1785 310 1870 T586 1956 H760 Z" /> <glyph unicode="t" glyph-name="t" horiz-adv-x="803" d="M375 1438V1120H754V977H375V369Q375 232 412 193T565 154H754V0H565Q352 0 271 79T190 369V977H55V1120H190V1438H375Z" /> </font> </defs> <line x1='5' y1='100' x2='695' y2='100' style='stroke:red; stroke-width:1; fill:none; '/> <line x1='5' y1='120' x2='695' y2='120' style='stroke:red; stroke-width:1; fill:none; '/> <text x='200' y='100' style='fill:black; text-anchor:middle; font-size:16pt;'> <tspan style='baseline-shift:baseline;'> Aft </tspan> <tspan style='baseline-shift:-100%;'> Aft </tspan> </text> <text x='300' y='100' style='font-family:TallAscender; fill:black; text-anchor:middle; font-size:16pt;'> <tspan style='baseline-shift:baseline;'> Aft </tspan> <tspan style='baseline-shift:-100%;'> Aft </tspan> </text> </svg> -Alan Allen Razdow wrote: > > > I think it's a question of knowing how much to shift, which may vary by > font, whether the particular string has ascenders, etc. > > -Allen > > -----Original Message----- > From: Doug Schepers [mailto:doug@schepers.cc] > Sent: Sunday, May 04, 2003 8:53 PM > To: dario > Cc: www-svg@w3.org > Subject: RE: baseline problem > > > Why not just use 'baseline-shift'? Am I missing something here? > > <svg> > <line x1='5' y1='100' x2='695' y2='100' style='stroke:red; > stroke-width:1; fill:none; '/> > <text x='300' y='100' style='fill:black; text-anchor:middle; > font-size:16px;'> > <tspan style='baseline-shift:baseline;'> > baseline > </tspan> > <tspan style='baseline-shift:sub;'> > sub > </tspan> > <tspan style='baseline-shift:super;'> > super > </tspan> > <tspan style='baseline-shift:-33%;'> > percentage (-33%) > </tspan> > <tspan style='baseline-shift:3px;'> > length (3px) > </tspan> > <tspan style='baseline-shift:-80%;'> > Baseline-Shift (-80%) > </tspan> > </text> > </svg> > > > Hope that helps- > -Doug > > > Chris Lilley wrote: > > > > > > On Sunday, May 4, 2003, 10:49:09 PM, dario wrote: > > > > d> OK, what can i do to draw text under specified line > > > > d> so, there is line at 100 pixels from the top, i'd like text > > drawn just under > > d> it. is it possible? > > > > I understand the use case and no, not directly. You need to know what > > the text size is and then offset that much by yourself. > > > > <text x="100" y="62" font-size="12" text-anchor="middle">blah</text> > > > > -- > > Chris mailto:chris@w3.org > >
Received on Monday, 5 May 2003 09:26:35 UTC