Re: Unicode labels, fonts for components?



Roedy Green wrote:
On Mon, 21 Jan 2008 21:09:45 -0800, "Peter Duniho"
<NpOeStPeAdM@xxxxxxxxxxxxxxxx> wrote, quoted or indirectly quoted
someone who said :

But: your page also says that I can only use the five Java logical fonts with an AWT control. This conflicts with your statement above, "You can do a setFont for any font installed". Can I actually do that? Or am I, as the web page says, restricted to the five Java fonts?

Pete

I explain all this at http://mindprod.com/jgloss/font.html

the rules are different for
AWT components
AWT drawString
Swing

Then there is the matter of whether you can have anti-aliasing.

Most people use Swing nowadays where you have the most flexibility
with Fonts.

Roedy,

I have some updates for your font page:

I used the following on a Linux Fedora 8 system today:

<sscce>
import java.awt.*;
import java.awt.event.*;

public class FontLister {
public static void main ( String [] args ) {
Frame frame = new Frame( "AWT Font Lister" );
frame.setSize( 800, 900 );
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent we ) {
System.exit( 0 );
}
});
Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAllFonts(); // A list of all Fonts, at 1 pt PLAIN.
int length = fonts.length;
if ( length > 82 ) length = 82; // Limit on Fedora 8 ???
Panel p = new Panel();
p.setLayout( new GridLayout(length, 0) );

for ( int i = 0; i < length; ++i ) {
String s = fonts[i].getFontName() + " - "
+ fonts[i].getFamily() + " (" + fonts[i].getName() + ")";
Label l = new Label( s );
l.setFont( fonts[i].deriveFont( 12.0f ) );
p.add( l );
}
ScrollPane sp = new ScrollPane();
sp.add( p );
frame.add( sp );
frame.setVisible( true );
}
}
</sscce>

As you can see this is pure AWT. Each Component (Label) is
drawn using a different Font. All my fonts (~195) are found,
but for some reason if I add more than 82 to the Panel, the
"frame.setVisible( true );" statement throws an
ArrayIndexOutOfBoundsException. (Using Sun JDK 1.6.)

But the 82 fonts display fine!

So it seems the AWT limit for logical fonts applies only to
Windows (I tested only on Windows XP).

Also it seems my TrueType fonts work on Fedora 8 as well.
I have to check into that more carefully before I'm
certain which font file formats work.

-----------
"You can simply the cache, sacrifice a small reptile and reboot."
I think you meant "...simply delete the cache, ...".
-----------
"If you want to include custom fonts in your application, you either
have to get the customer to install them or uses this trick to use
them directly from a jar."

"uses" should be "use".
-----------
canDisplay() doesn't actually "lie". I believe it is implemented by
checking to see if a code point is within the range covered by
that font. The problem is fonts are not required to provide
glyphs for each code point in the range they claim to cover.
-----------

I'd like to see you start a JSR for updating the specs to include
minimal font, graphic, and system standard sounds (and encodings).
The platform-dependencies and lack of methods to work around these
limitations is very annoying and confusing.

-Wayne
.



Relevant Pages

  • Re: Unicode labels, fonts for components?
    ... with an AWT control. ... do a setFont for any font installed". ... restricted to the five Java fonts? ...
    (comp.lang.java.programmer)
  • Re: Yet another limitation of Peered AWT components
    ... > I thought perhaps the problem was that Windows peers could only handle ... > 8-bit fonts, but that does not appear to be the case. ... Maybe it's a gentle incentive from Sun not to use AWT and use Swing instead? ... Prev by Date: ...
    (comp.lang.java.programmer)
  • [NT] Windows Embedded Open Type (EOT) Font Heap Overflow
    ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... A vulnerability in the way that Windows uncompresses Embedded Open Type ... fonts allow the author of a malicious web page to execute arbitrary code ... A heap overflow vulnerability exists in T2EMBED.DLL, ...
    (Securiteam)
  • Re: Changing default "Add Fonts" folder
    ... Microsoft MVP- Windows Shell/User ... Folder customizations ... I g2g to sleep. ... > Just drag the fonts in. ...
    (microsoft.public.windowsxp.customize)
  • Re: Openoffice disadvantages?
    ... And especially, interfaces with the outside world well, both in Mac word processors and the PC world, which I suppose is dominated by Microsoft Word, WordPad and Notepad included in Windows 2000/XP/Vista. ... No built-in fonts menu/fonts list, but only the ability to use the built-in FontBook list in the OS X systems. ... Also opening Mac-made .odt docs in Staroffice on windows is just as the original or visa-versa - opening starOffice .odt documents in Openoffice on a Mac is perfect. ... They chose three test persons - all dedicated MSOffice users and replaced their original computers with models set up only with Openoffice. ...
    (comp.sys.mac.apps)