Есть ли способ использовать шрифт системы MacOS с запасным образом для отсутствующих глифов (таких как смайлики) в Java JAVA

Программисты JAVA общаются здесь
Anonymous
Есть ли способ использовать шрифт системы MacOS с запасным образом для отсутствующих глифов (таких как смайлики) в Java

Сообщение Anonymous »

Я использую OpenJDK 23 на Mac с macOS 15 (Sequoia), и я хотел бы использовать шрифт системы MacOS в моем качалке. Гранде . Неподдерживаемые глифы просто не отображаются, см. Прикрепленные скриншоты и пример кода ниже. Кажется, что запасное/составное поведение для macOS обрабатывается в нативном коде, есть ли способ определить .applesystemuifont в качестве основного шрифта, а не Lucida Grande ? Neo, Apple Symbols, Applegotic, Applemyungjo, SF Mono .
Интересно, когда я указываю sf mono в качестве имени шрифта в примере ниже, отступление работает с шрифтом SF Mono (но это не шрифт, который я хочу, конечно, конечно).

Код: Выделить всё

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.font.TextAttribute;
import java.util.Map;

public class MacFontFallback {
private static void setupMacOsFont() {
Font defaultFont = UIManager.getDefaults().getFont("Label.font");
Map normalAttributes = Map.of(TextAttribute.FAMILY, ".AppleSystemUIFont");
Font derivedFont = defaultFont.deriveFont(normalAttributes);
FontUIResource fontUIResource = new FontUIResource(derivedFont);
UIManager.put("defaultFont", fontUIResource);
UIManager.put("Label.font", fontUIResource);
}

public static void main(String[] args) {
setupMacOsFont();

SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Mac Font");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello 😊");
frame.add(label);
frame.setSize(new Dimension(300, 80));
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
}
}
рендеринг с использованием шрифта по умолчанию

".Applesystemuifont"

render render render render render render render render render render render render render render render render render render render render renders. />
рендер с использованием "sf mono" font


Подробнее здесь: https://stackoverflow.com/questions/795 ... -glyphs-su

Вернуться в «JAVA»