Issue1261231

classification
Title: JButton('\u0F00') not working
Type: Severity: normal
Components: None Versions:
Milestone:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: cgroves, ptaney, sgala
Priority: low Keywords:

Created on 2005-08-16.18:55:01 by ptaney, last changed 2007-12-02.21:05:25 by cgroves.

Messages
msg1020 (view) Author: paul taney (ptaney) Date: 2005-08-16.18:55:01
Frank Wierzbicki wrote:
>> ...but this jython only posts the hex string:
>> 
>>     box.add(swing.JButton("\u0F00"))
>> or
>>     box.add(swing.JButton(unicode("\u0F00")))
>> 
>> Similar problem with the textpane.
>> 
>> How do I inform widgets about the font, or what's up?
>> I am on a Mac running 10.4.2 and jython2.2a1
>Does this work if you do it in regular Java?  Does in work in Jython 
>2.1?

>There is very new support for more CPython-like unicode behavior 
for
>strings like u"xxx".  There could be some problems with it.  If this
>works in either or both Java and Jython 2.1 please submit a bug
>report.

I have tried various workarounds to no avail, so here are test 
programs in java and jython.  The java works fine; the jython posts 
garbage.


import java.awt.*; 
import java.awt.font.*; 
import javax.swing.JButton;
import javax.swing.JFrame;
import java.io.*; 

public class TibFontTest extends Canvas { 
    // pick up the font at 
    // http://cvs.sourceforge.net/viewcvs.py/thdltools/Fonts/
TibetanMachineUni and put it in the local dir
    // see what they look like: http://www.unicode.org/charts/PDF/
U0F00.pdf

    JFrame f; 
    File fh1;
    FileInputStream fis;
    Font myfont; 

    public TibFontTest(String title) { 
        f = new JFrame(title); 
        setSize(500, 400); 

        try { 
            fh1 = new File("TibetanMachineUniAlphaVolt.ttf");
            fis = new FileInputStream(fh1);
            myfont = Font.createFont(Font.TRUETYPE_FONT, fis);
            myfont = myfont.deriveFont(Font.PLAIN, 20);
        } 
        catch (Exception e) { 
            System.out.println("Font problem.  Exiting.");
            System.exit(0);
        }

        f.getContentPane().setLayout(new GridLayout(6, 3));
        f.getContentPane().add(new JButton("\u0F00"));
        f.getContentPane().add(new JButton("\u0F01"));
        f.getContentPane().add(new JButton("\u0F02"));
        f.getContentPane().add(new JButton("\u0F03"));
        f.getContentPane().add(new JButton("\u0F04"));
        f.getContentPane().add(new JButton("\u0F05"));

        f.getContentPane().add(new JButton("\u0F06"));
        f.getContentPane().add(new JButton("\u0F07"));
        f.getContentPane().add(new JButton("\u0F40"));
        f.getContentPane().add(new JButton("\u0F41"));
        f.getContentPane().add(new JButton("\u0F42"));
        f.getContentPane().add(new JButton("\u0F43"));

        f.getContentPane().add(new JButton("\u0F44"));
        f.getContentPane().add(new JButton("\u0F45"));
        f.getContentPane().add(new JButton("\u0F46"));
        f.getContentPane().add(new JButton("\u0F47"));
        f.getContentPane().add(new JButton("\u0F49"));
        f.getContentPane().add(new JButton("\u0F4A"));
        f.pack(); 
        f.setVisible(true); 
    } 

    public static void main(String args[]) { 
        TibFontTest f1 = new TibFontTest("Font Test Window"); 
    } 
} 

====

from pawt import swing
from java import awt
from java import io

class TibFontTest3(awt.Canvas):
    '''pick up the font at 
    http://cvs.sourceforge.net/viewcvs.py/thdltools/Fonts/
TibetanMachineUni/ and put it in the local dir
    see what they look like: http://www.unicode.org/charts/PDF/
U0F00.pdf'''  or look at the java buttons

    def __init__(self, title, 
fontfilename="TibetanMachineUniAlphaVolt.ttf"):
        f = swing.JFrame(title)
        self.setSize(500, 400)
        self.pointsize = 15

        fh1 = io.File(fontfilename)
        fis = io.FileInputStream(fh1)
        self.myfont = awt.Font.createFont
(awt.Font.TRUETYPE_FONT, fis)
        self.myfont = self.myfont.deriveFont(awt.Font.PLAIN, 
self.pointsize)

        f.contentPane.setLayout(awt.GridLayout(6, 3))
        f.contentPane.add(swing.JButton('\u0F00'.encode('utf-16')))
        f.contentPane.add(swing.JButton('\u0F01'.encode('utf-16')))
        f.contentPane.add(swing.JButton('\u0F02'.encode('utf-16')))
        f.contentPane.add(swing.JButton('\u0F03'.encode('utf-16')))
        f.contentPane.add(swing.JButton('\u0F04'.encode('utf-16')))
        f.contentPane.add(swing.JButton('\u0F05'.encode('utf-16')))
        # now with  u'\u
        f.contentPane.add(swing.JButton(u'\u0F06'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'\u0F07'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'\u0F40'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'\u0F41'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'\u0F42'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'\u0F43'.encode('utf-16')))
        # now with  u'
        f.contentPane.add(swing.JButton(u'0F44'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'0F45'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'0F46'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'0F47'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'0F49'.encode('utf-16')))
        f.contentPane.add(swing.JButton(u'0F4A'.encode('utf-16')))

        f.pack()
        f.setVisible(True)
    
if __name__ == "__main__":
    f3 = TibFontTest3("Font Test Window")

msg1021 (view) Author: Santiago Gala (sgala) Date: 2005-08-30.00:00:19
Logged In: YES 
user_id=178886

When I tested them (I couldn't see the font either with java
or jython, but fontforge showed it), I found that jython
works with:

u'\u0F06' (no encode('utf-16')

At least, is shows just one (empty square) glyph. In fact,
this string is already encoded, and encoding it again won't
help.

and, using python2.2 or jython2.2a1:
>>> print "".join([unichr(i) for i in
xrange(3840,3847)])+"".join([unichr(i) for i in
xrange(3880,3890)])
 ()*+,-./01

is working from command line, as I paste it here. This after
I installed this font in /usr/fonts/local.

Not sure why java/jython don't show the font, though.
msg1022 (view) Author: Charlie Groves (cgroves) Date: 2007-12-02.21:05:25
This code works for me:

from javax.swing import JButton, JFrame
from java.awt import Font

f = JFrame('Font Test')
font = Font.createFont(Font.TRUETYPE_FONT, open("TibetanMachineUniAlphaVolt.ttf"))
f.contentPane.add(JButton(u'\u0F06'))
f.pack()
f.visible = True

So I'm calling this fixed.
History
Date User Action Args
2005-08-16 18:55:01ptaneycreate