
Fonty hrají důležitou roli při prezentaci textu v dokumentech a na webových stránkách. K dispozici jsou různé rodiny písem, které vám umožňují používat ozdobné znaky, aby byl váš text přitažlivý. Protože se Aspose zabývá automatizací formátů souborů, spustili jsme vyhrazené API pro manipulaci s písmy pro práci s formáty souborů písem. V tomto článku se seznámíte s naším Java Font API a naučíte se pracovat s fonty CFF, TrueType, OpenType a Type1 z vašich aplikací Java.
- Java API pro manipulaci s písmy
- Načtěte písma CFF, TrueType a Type1 pomocí Java
- Extrahujte metriky písem z písem TrueType nebo Type1 pomocí Java
Java API pro manipulaci s písmy
Aspose.Font for Java je rozhraní API pro manipulaci s písmy, které umožňuje načítat, ukládat a manipulovat s oblíbenými písmy včetně CFF, TrueType, Type1, EOT a OpenType. Kromě toho rozhraní API podporuje načítání metrik písem a také vykreslování textu pomocí podporovaných typů písem. Rozhraní API si můžete stáhnout nebo jej nainstalovat do aplikací založených na Maven pomocí následujících konfigurací.
<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>
Načtěte písma CFF, TrueType a Type1 pomocí Java
Písmo můžete snadno načíst ze souboru umístěného ve vašem úložišti z vašeho programu Java. Po načtení písma můžete provádět další operace podle potřeby. Následují kroky k načtení písma pomocí Aspose.Font for Java.
- Pomocí třídy FontDefinition načtěte písmo zadáním jeho typu, jako je TrueType, Type1 atd.
- Pro přístup k písmům CFF, TrueType a Type1 z objektu FontDefinition použijte třídu CffFont, TtfFont nebo Type1Font.
Načtěte písma CFF pomocí Java
Takto můžete načíst písmo CFF ze souboru pomocí Java.
// Úplné příklady a datové soubory najdete na 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");
Načtěte písma TrueType pomocí Java
Následující ukázka kódu Java načte písmo TrueType.
// Úplné příklady a datové soubory najdete na 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);
Načtěte písma Type1 pomocí Java
Následující ukázka kódu ukazuje, jak načíst písmo Type1 pomocí Java.
// Úplné příklady a datové soubory najdete na 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);
Extrahujte metriky písem z písem TrueType nebo Type1 pomocí Java
Soubory písem také obsahují informace o písmu, které se používají ke specifikaci řádkování, umístění dolního a horního indexu, zarovnání atd. Aspose.Font for Java vám také umožňuje extrahovat metrické informace písem včetně Ascender, Descender, TypoAscender, TypoDescender a UnitsPerEm. Následují kroky k provedení této operace.
- Použijte třídu FontDefinition k načtení písem TrueType nebo Type1.
- K písmu přistupujte pomocí třídy TtfFont nebo Type1Font podle typu písma.
- Extrahujte informace o metrikách písma.
Získejte metriky písem z písma TrueType pomocí Java
// Úplné příklady a datové soubory najdete na 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);
//Získejte tabulku kódování Cmap unicode z písma jako objekt TtfCMapFormatBaseTable pro přístup k informacím o glyfu písma pro symbol 'A'.
//Také zkontrolujte, zda má písmo objekt TtfGlyfTable (tabulka 'glyf') pro přístup ke glyfu.
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());
//Kód pro symbol 'A'
char unicode = (char)65;
//Index glyfů pro „A“
long glIndex = cmapTable.getGlyphIndex(unicode);
if (glIndex != 0)
{
//Glyf pro „A“
Glyph glyph = font.getGlyphById(glIndex);
if (glyph != null)
{
//Vytisknout metriky glyfů
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)));
}
}
}
Extrahujte metriky písem z písma Type1 pomocí Java
// Úplné příklady a datové soubory najdete na 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);
Závěr
V tomto článku jste se naučili pracovat s fonty CFF, TrueType a Type1 programově pomocí Java. Dále jste viděli, jak získat přístup k informacím o metrikách konkrétního písma. Další informace o rozhraní API pro manipulaci s písmy Java můžete prozkoumat pomocí dokumentace a ukázky zdrojového kódu.