From ff5289b2daac32393c5043034eea197f6759ff91 Mon Sep 17 00:00:00 2001 From: duncanmcqueen Date: Wed, 14 Oct 2026 08:26:59 -0500 Subject: [PATCH] OpenTypeFontPeer: implement canDisplay() and canDisplayUpTo() Both methods threw UnsupportedOperationException, so Font.canDisplay() failed for all OpenType fonts. A character can be displayed when the font maps it to a glyph other than the missing glyph. Co-Authored-By: Claude Opus 5.5 Signed-off-by: duncanmcqueen --- gnu/java/awt/font/OpenTypeFontPeer.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/java/awt/font/OpenTypeFontPeer.java b/gnu/java/awt/font/OpenTypeFontPeer.java index d8bff11999..fc8ddafad8 100644 --- a/gnu/java/awt/font/OpenTypeFontPeer.java +++ b/gnu/java/awt/font/OpenTypeFontPeer.java @@ -290,14 +290,15 @@ public OpenTypeFontPeer(String name, Map atts) public boolean canDisplay(Font font, int c) { - // FIXME: Implement this. - throw new UnsupportedOperationException("Not yet implemented"); + return fontDelegate.getGlyphIndex(c) != fontDelegate.getMissingGlyphCode(); } public int canDisplayUpTo(Font font, CharacterIterator i, int start, int limit) { - // FIXME: Implement this. - throw new UnsupportedOperationException("Not yet implemented"); + for (char c = i.setIndex(start); i.getIndex() < limit; c = i.next()) + if (! canDisplay(font, c)) + return i.getIndex(); + return -1; } public String getSubFamilyName(Font font, Locale locale)