harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Khaschansky" <oleg.v.khaschan...@gmail.com>
Subject Re: [classlib][awt] Fonts with negative size.
Date Mon, 25 Sep 2006 14:22:23 GMT
It seems like returning negative metrics is somewhat logical. If the
font is rotated by -Pi then all offsets becomes negative, but their
absolute values are equal to the positive ones.

I'll try to give an example. E.g. if descent was, say, 10 and one
needed to offset 10 pt from the origin (baseline) to the bottom of the
black box then if -pi rotation is applied to the font, one need to
offset -10 pt from the baseline since black box is upside down.

Yes, RI failed to be consistent with this on heavyweight components as
it was noted in the evaluation. But is this bug still there in the RI?
And if RI is inconsistent with the drawing of negative-sized fonts it
is still consistent with the negative metrics, right?

IMHO, the ideal behavior in all situations would be the following:
  If the font has negative size we assume that it has all the same
metrics as the positive font, but the metrics which has a direction
(like ascent, descent, etc.) are with the different sign. The font is
drawn as it was rotated by -pi angle.

Personaly my opinion is that this is a bug, not non-bug diff.
I'd suggest to choose between these options:
  1. Fix metrics and rendering, close this issue.
  2. Fix metrics, open a new jira for the rendering of the negative-sized fonts.
  3. Fix nothing, open a new jira or add an evaluation to this one
both for the rendering and for the metrics. This means that we want to
have them together.

For the rendering part, why not just add a transform if the size of
the font is negative?

On 9/25/06, Ilya Okomin <ilya.okomin@gmail.com> wrote:
> On 9/25/06, Oleg Khaschansky <oleg.v.khaschansky@gmail.com > wrote:
>
> > It was evaluated as "not a bug". But it is clear from its evaluation
> > that negative-sized fonts are treated as positive sized but rotated
> > around their origin, say with implicit transform. I'd suggest to
> > follow this behavior.
>
>
> I agree, that the behavior of the negative-sized fonts on RI is looks like
> the behavior of positive ones with -Pi rotation. However, if we look at the
> font metrics, bounds - we can see negative values for height, width
> values...I'm not sure they have any sence without additional documentation
> that we can't find in the spec.
> Moreover bug evaluation says that RI handles negative-sized fonts for
> components in different ways depending on the platform. And it's behavior
> unlike the drawing on the frame surface. What is to add - metrics for all
> these various cases are the same, it means that RI has erroneous behavior in
> some way.
>
> I would suggest not to follow the RI and mark it as "non-bug difference" as
> the RI hasn't any clear documentation on this problem and it's
> behavior erroneous and depends on the platform or component type.
>
> Thanks,
> Ilya.
>
>
>
>
> > On 9/23/06, Richard Liang < richard.liangyx@gmail.com> wrote:
> > > On 9/23/06, Alexey Varlamov <alexey.v.varlamov@gmail.com > wrote:
> > > > Google said this is the bug of RI in progress [1]. However there is no
> > > > distinct resolution yet...
> > > >
> > >
> > > It's reported again Java 1.1.8 more than 3 years agao. I don't think
> > > RI will fix this bug.
> > >
> > > Richard.
> > >
> > > > [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4803825
> > > >
> > > >
> > > > 2006/9/23, Richard Liang < richard.liangyx@gmail.com>:
> > > > > On 9/22/06, Ilya Okomin < ilya.okomin@gmail.com> wrote:
> > > > > > Hi, all!
> > > > > >
> > > > > > I was playing with fonts and found that Font with negative size
> > can be
> > > > > > created on RI.
> > > > > >  Unfortunately spec keep silence about fonts with negative sizes.
> > > > > > On Harmony if font size is negative then it is set to zero.
> > > > > >
> > > > > > ------------test.java---------------
> > > > > > import java.awt.*;
> > > > > > import java.awt.font.FontRenderContext;
> > > > > >
> > > > > > public class NegativeFontTest {
> > > > > >
> > > > > >     public static void main(String[] args) {
> > > > > >         int fontsize=-5;
> > > > > >         Font localFont = new Font("Arial", 2, fontsize);
> > > > > >         System.out.println("Size = " + localFont.getSize2D());
> > > > > >
> > > > > >         System.out.println("Height = " + localFont.getLineMetrics("",
> > new
> > > > > > FontRenderContext(null, false, false)).getHeight());
> > > > > >         System.out.println("MaxCharBounds = " +
> > localFont.getMaxCharBounds(new
> > > > > > FontRenderContext(null, false, false)));
> > > > > >     }
> > > > > >
> > > > > > }
> > > > > > ----------------------------------------
> > > > > > If you run this test case on RI you can see that output looks
> > quite strange:
> > > > > >
> > > > > > Size = -5.0
> > > > > > Height = -5.7495117
> > > > > > MaxCharBounds = java.awt.geom.Rectangle2D$Float[x=0.0,y=4.6081543
> > ,w=-5.46875
> > > > > > ,h=- 5.7495117]
> > > > > >
> > > > > >
> > > > > > Actually, I dont see any sence in negative height and width
> > metrics and
> > > > > > I think it is an RI bug.
> > > > > > If you try to draw text with such font on RI - nothing is happen,
> > you can't
> > > > > > see any text on the component.
> > > > > > I've ran 'xfontsel' tool on Linux and there was suggested to
> > choose only
> > > > > > positive sized fonts. Also I've looked on the GDI LOGFONT
> > structure
> > > > > > description in MSDN and I've seen there again that we deal with
> > absolute
> > > > > > height values.
> > > > > >
> > > > > > Any thoughts on this issue, is it RI bug or not?
> > > > >
> > > > > We cannot say it's a bug of RI, because the spec does not explicitly
> > > > > describe the requirement of font size.
> > > > >
> > > > > I suggest we follow RI.
> > > > >
> > > > > Best regards,
> > > > > Richard
> > > > >
> > > > > >
> > > > > > Thanks,
> > > > > > Ilya.
> > > > > >
> > > > > > --
> > > > > > --
> > > > > > Ilya Okomin
> > > > > > Intel Middleware Products Division
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Richard Liang
> > > > > China Development Lab, IBM
> > > > >
> > > > >
> > ---------------------------------------------------------------------
> > > > > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > > > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > > > > For additional commands, e-mail:
> > harmony-dev-help@incubator.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > > > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Richard Liang
> > > China Development Lab, IBM
> > >
> > > ---------------------------------------------------------------------
> > > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >
> >
>
>
> --
> --
> Ilya Okomin
> Intel Middleware Products Division
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message