package jnpf.dms.fonts; import jnpf.exception.DataException; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.io.IOException; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.stream.Stream; /** The directory mounted into OnlyOffice is also the source of every DMS watermark font. */ public final class DmsWatermarkFonts { private static final DmsWatermarkFonts CONFIGURED = new DmsWatermarkFonts(System.getenv("ONLYOFFICE_CUSTOM_FONT_DIR")); private final Path directory; private long checkedAt; private List fingerprint = List.of(); private Map families = Map.of(); private Map aliases = Map.of(); public DmsWatermarkFonts(String directory) { this.directory = directory == null || directory.isBlank() ? null : Path.of(directory).toAbsolutePath().normalize(); } public static DmsWatermarkFonts configured() { return CONFIGURED; } public synchronized List