One further question. On the Mac, some characters are given a default emoji presentation, and appear with a colored image. This is done by substituting the glyph from the Apple Color Emoji.
With drawString(), when I try to draw a character in (say) Symbola that by default on the Mac is emoji, the font says .canDisplay(...) is true, but I get no image, just blank. It's like drawing a space. If I try to draw *any* character in Apple Color Emoji, I get a blank as well. Is there any way to work around this, and use the Apple Color Emoji? Note: I tried using a JTextArea to work around this. When I changed the existing TextAreaDemo.java to add the following 2 lines, it crashed! textArea.setFont(*new* Font("Apple Color Emoji", 0, 18)); textArea.setText("abc👷def"); Same happens if the setText line is omitted, and if you simply paste in an emoji character into the running program. Mark <https://google.com/+MarkDavis> *— Il meglio è l’inimico del bene —* On 9 April 2014 21:28, Mark Davis ☕️ <m...@macchiato.com> wrote: > Fixes it, thanks!! > > > Mark <https://google.com/+MarkDavis> > > *— Il meglio è l’inimico del bene —* > > > On 9 April 2014 19:43, Phil Race <philip.r...@oracle.com> wrote: > > > So can you please update to 7u51 (current security baseline) and see if > > that cures it ? > > http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html > > > > -phil. > > > > On 4/9/2014 10:29 AM, Mark Davis ☕️ wrote: > > > >> jdk1.7.0_25.jdk > >> > >> > >> Mark <https://google.com/+MarkDavis> > >> / > >> / > >> /— Il meglio è l’inimico del bene —/ > >> // > >> > >> > >> > >> On 9 April 2014 18:31, Phil Race <philip.r...@oracle.com <mailto: > >> philip.r...@oracle.com>> wrote: > >> > >> Sounds like https://bugs.openjdk.java.net/browse/JDK-8015556 > >> [macosx] surrogate pairs do not render properly (show up as boxes > >> or incorrect glyphs) > >> > >> But that was fixed in 7u40. What JDK 7 update is in use here ? > >> > >> -phil. > >> > >> > >> On 4/9/14 9:17 AM, Naoto Sato wrote: > >> > >>> Hi Mark, > >>> > >>> On 4/9/14, 3:11 AM, Mark Davis ☕️ wrote: > >>> > >>>> I'm having some trouble with drawing supplemental characters in > >>>> Java. It > >>>> appears to be due to bugs in Java. > >>>> > >>>> *First, how do I report this? And second, can anyone think of a > >>>> work-around?* > >>>> > >>> > >>> Here is the link to report an issue against JDK: > >>> > >>> http://bugreport.java.com/bugreport/ > >>> > >>> Please choose "classes_2d" as the subcategory. > >>> > >>> > >>>> This is on a Mac OS 10.9.2, JDK 7, and I am rendering a number of > >>>> characters in a loop. > >>>> > >>>> When I call > >>>> > >>>> graphics.drawString(s, xStart, ascent); > >>>> > >>>> Each supplemental character that shares the same first char (high > >>>> surrogate) gets the same image (see attachments). > >>>> > >>>> It appears that it is caching by char instead of by code point. > >>>> > >>>> > >>>> To work around the problem, I tried changing the code to draw > glyph > >>>> vectors instead. > >>>> > >>>> FontRenderContext frc = > >>>> graphics.getFontRenderContext(); > >>>> > >>>> GlyphVector gv = myFont.createGlyphVector(frc, > s); > >>>> > >>>> ... > >>>> > >>>> Shape shape = gv.getOutline(xStart, ascent); > >>>> > >>>> graphics.draw(shape); > >>>> > >>>> To my surprise, it got even worse: I get an unknown glyph after > >>>> each > >>>> image. See attachments. > >>>> > >>>> It appears that when it is advancing through the string to get the > >>>> glyphs, it is picking up the glyph ID for the code point, but > >>>> then it is > >>>> only advancing by 1, so it is always picking up garbage after each > >>>> character. > >>>> > >>> > >>> Yeah, your explanation does sound like what's happening in the > >>> font rendering on MacOSX. Phil/Mike, do you have any idea what's > >>> going on? > >>> > >>> Naoto > >>> > >> > >> > >> > > >