harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Liang" <richard.lian...@gmail.com>
Subject Re: [classlib][awt] Fonts with negative size.
Date Tue, 26 Sep 2006 02:58:08 GMT
Agree. We may follow Java 6.0 Spec.

Richard.

On 9/25/06, Ilya Okomin <ilya.okomin@gmail.com> wrote:
> Guys, I found something in the Java 6.0 documentation.
> If you look at the TextAttribute spec there is a note for the SIZE
> field, attribute key for the font size:
>
> "Attribute key for the font size. Values are instances of *Number*. The
> default value is 12pt.
>
> This corresponds to the size parameter to the Font constructor.
>
> Very large or small sizes will impact rendering performance, and the
> rendering system might not render text at these sizes. *Negative sizes are
> illegal and result in the default size*."
> For this reason I suggest to use default size (12pt) if font has negative
> size parameter. Any thoughts?
>
> I believe negative-sized fonts support was erroneous in Java 5.0 and
> in the earlier versions of Java.
>
> Regards,
> Ilya.
>
>
> On 9/25/06, Oleg Khaschansky <oleg.v.khaschansky@gmail.com> wrote:
> >
> > 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
> >
> >
>
>
> --
> --
> 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


Mime
View raw message