Шрифты играют важную роль в представлении текста в документах и веб-страницах. Доступны различные семейства шрифтов, которые позволяют использовать причудливые символы, чтобы сделать ваш текст привлекательным. Поскольку Aspose занимается автоматизацией форматов файлов, мы запустили специальный API для работы со шрифтами для работы с форматами файлов шрифтов. В этой статье вы познакомитесь с нашим Java Font API и узнаете, как работать со шрифтами CFF, TrueType, OpenType и Type1 из ваших приложений Java.
- API управления шрифтами Java
- Загрузка шрифтов CFF, TrueType и Type1 с помощью Java
- Извлечение метрик шрифта из шрифтов TrueType или Type1 с использованием Java
API управления шрифтами Java
Aspose.Font for Java — это API для управления шрифтами, который позволяет загружать, сохранять и управлять популярными шрифтами, включая CFF, TrueType, Type1, EOT и OpenType. Кроме того, API поддерживает получение метрик шрифта, а также визуализацию текста с использованием поддерживаемых типов шрифтов. Вы можете загрузить API или установить его в своих приложениях на основе Maven, используя следующие конфигурации.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-font</artifactId>
<version>20.10</version>
</dependency>
Загрузка шрифтов CFF, TrueType и Type1 с помощью Java
Вы можете легко загрузить шрифт из файла, расположенного в вашем хранилище, из вашей программы Java. После того, как вы загрузили шрифт, вы можете выполнять дальнейшие операции по мере необходимости. Ниже приведены шаги для загрузки шрифта с помощью Aspose.Font для Java.
- Используйте класс FontDefinition для загрузки шрифта, указав его тип, например TrueType, Type1 и т. д.
- Используйте класс CffFont, TtfFont или Type1Font для доступа к шрифтам CFF, TrueType и Type1 соответственно из объекта FontDefinition.
Загрузите шрифты CFF с помощью Java
Вот как вы можете загрузить шрифт CFF из файла с помощью Java.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-font/Aspose.Font-for-Java.
String fileName = Utils.getDataDir() + "OpenSans-Regular.cff"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new FileSystemStreamSource(fileName)));
CffFont ttfFont = (CffFont) Font.open(fd);
System.out.println("Font has been loaded");
Загрузите шрифты TrueType с помощью Java
Следующий пример кода Java загружает шрифт TrueType.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-font/Aspose.Font-for-Java.
String fileName = Utils.getDataDir() + "Montserrat-Regular.ttf"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = (TtfFont) Font.open(fd);
Загрузите шрифты Type1 с помощью Java
В следующем примере кода показано, как загрузить шрифт Type1 с помощью Java.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-font/Aspose.Font-for-Java.
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = (Type1Font) Font.open(fd);
Извлечение метрик шрифта из шрифтов TrueType или Type1 с использованием Java
Файлы шрифтов также содержат информацию о шрифте, которая используется для указания межстрочного интервала, размещения нижнего и верхнего индексов, выравнивания и т. д. Aspose.Font для Java также позволяет извлекать информацию о метриках шрифта, включая Ascender, Descender, TypoAscender, TypoDescender. и UnitsPerEm. Ниже приведены шаги для выполнения этой операции.
- Используйте класс FontDefinition для загрузки шрифта TrueType или Type1.
- Получите доступ к шрифту с помощью класса TtfFont или Type1Font в зависимости от типа шрифта.
- Извлеките информацию о метриках шрифта.
Получить метрики шрифта из шрифта TrueType с помощью Java
// Полные примеры и файлы данных см. на странице https://github.com/aspose-font/Aspose.Font-for-Java.
String fileName = Utils.getDataDir() + "Montserrat-Regular.ttf"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = (TtfFont) Font.open(fd);
String name = font.getFontName();
System.out.println("Font name: " + name);
System.out.println("Glyph count: " + font.getNumGlyphs());
String metrics = MessageFormat.format(
"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
font.getMetrics().getAscender(), font.getMetrics().getDescender(),
font.getMetrics().getTypoAscender(), font.getMetrics().getTypoDescender(), font.getMetrics().getUnitsPerEM());
System.out.println(metrics);
//Получите таблицу кодировки Unicode cmap из шрифта как объект TtfCMapFormatBaseTable, чтобы получить доступ к информации о глифе шрифта для символа «A».
//Также убедитесь, что у шрифта есть объект TtfGlyfTable (таблица 'glyf') для доступа к глифу.
TtfCMapFormatBaseTable cmapTable = null;
if (font.getTtfTables().getCMapTable() != null)
{
cmapTable = font.getTtfTables().getCMapTable().findUnicodeTable();
}
if (cmapTable != null && font.getTtfTables().getGlyfTable() != null)
{
System.out.println("Font cmap unicode table: PlatformID = " + cmapTable.getPlatformId() +
", PlatformSpecificID = " + cmapTable.getPlatformSpecificId());
//Код для символа «А»
char unicode = (char)65;
//Индекс глифа для «А»
long glIndex = cmapTable.getGlyphIndex(unicode);
if (glIndex != 0)
{
//Глиф для «А»
Glyph glyph = font.getGlyphById(glIndex);
if (glyph != null)
{
//Печать метрик глифа
System.out.println("Glyph metrics for 'A' symbol:");
String bbox = MessageFormat.format(
"Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
glyph.getGlyphBBox().getXMin(), glyph.getGlyphBBox().getXMax(),
glyph.getGlyphBBox().getYMin(), glyph.getGlyphBBox().getYMax());
System.out.println(bbox);
System.out.println("Width:" + font.getMetrics().getGlyphWidth(new GlyphUInt32Id(glIndex)));
}
}
}
Извлечение метрик шрифта из шрифта Type1 с использованием Java
// Полные примеры и файлы данных см. на странице https://github.com/aspose-font/Aspose.Font-for-Java.
String fileName = Utils.getDataDir() + "courier.pfb"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = (Type1Font) Font.open(fd);
String name = font.getFontName();
System.out.println("Font name: " + name);
System.out.println("Glyph count: " + font.getNumGlyphs());
String metrics = MessageFormat.format(
"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
font.getMetrics().getAscender(), font.getMetrics().getDescender(),
font.getMetrics().getTypoAscender(), font.getMetrics().getTypoDescender(), font.getMetrics().getUnitsPerEM());
System.out.println(metrics);
Вывод
В этой статье вы узнали, как программно работать со шрифтами CFF, TrueType и Type1 с помощью Java. Кроме того, вы видели, как получить доступ к информации о метриках определенного шрифта. Вы можете узнать больше об API управления шрифтами Java, используя документацию и примеры исходного кода.