manipolare i caratteri in java

Fonts svolgono un ruolo importante nella presentazione del testo all’interno dei documenti e delle pagine web. Sono disponibili varie famiglie di caratteri che ti consentono di utilizzare caratteri fantasiosi per rendere il tuo testo accattivante. Poiché Aspose si occupa dell’automazione dei formati di file, abbiamo lanciato un’API dedicata alla manipolazione dei caratteri per lavorare con i formati di file dei caratteri. In questo articolo acquisirai familiarità con la nostra API Font Java e imparerai come lavorare con i font CFF, TrueType, OpenType e Type1 dalle tue applicazioni Java.

API di manipolazione dei caratteri Java

Aspose.Font for Java è l’API di manipolazione dei caratteri che consente di caricare, salvare e manipolare i caratteri più diffusi, inclusi CFF, TrueType, Type1, EOT e OpenType. Inoltre, l’API supporta il recupero delle metriche dei caratteri e il rendering del testo utilizzando i tipi di carattere supportati. Puoi scaricare l’API o installarla all’interno delle tue applicazioni basate su Maven utilizzando le seguenti configurazioni.

<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>

Carica i caratteri CFF, TrueType e Type1 utilizzando Java

Puoi facilmente caricare il carattere da un file che si trova nella tua memoria dall’interno del tuo programma Java. Una volta caricato il font, è possibile eseguire ulteriori operazioni secondo necessità. Di seguito sono riportati i passaggi per caricare un font utilizzando Aspose.Font per Java.

  • Usa la classe FontDefinition per caricare il font specificandone il tipo come TrueType, Type1, ecc.
  • Utilizzare la classe CffFont, TtfFont o Type1Font per accedere rispettivamente ai caratteri CFF, TrueType e Type1 dall’oggetto FontDefinition.

Carica i caratteri CFF usando Java

Ecco come caricare un font CFF da un file usando Java.

// Per esempi completi e file di dati, vai a 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");

Carica i caratteri TrueType utilizzando Java

L’esempio di codice Java seguente carica un carattere TrueType.

// Per esempi completi e file di dati, vai a 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);        

Carica i caratteri Type1 utilizzando Java

L’esempio di codice seguente mostra come caricare un carattere Type1 utilizzando Java.

// Per esempi completi e file di dati, vai a 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);

Estrai le metriche dei caratteri dai caratteri TrueType o Type1 utilizzando Java

I file dei caratteri contengono anche le informazioni sul carattere che vengono utilizzate per specificare l’interlinea, il posizionamento di pedice e apice, allineamento e così via. Aspose.Font per Java consente anche di estrarre le informazioni sulla metrica del carattere tra cui Ascender, Descender, TypoAscender, TypoDescender e UnitsPerEm. Di seguito sono riportati i passaggi per eseguire questa operazione.

  • Usa la classe FontDefinition per caricare il font TrueType o Type1.
  • Accedi al carattere utilizzando la classe TtfFont o Type1Font in base al tipo di carattere.
  • Estrarre le informazioni sulle metriche del carattere.

Ottieni le metriche dei caratteri da TrueType Font utilizzando Java

// Per esempi completi e file di dati, vai a 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);
      
    //Ottieni la tabella di codifica cmap unicode dal font come oggetto TtfCMapFormatBaseTable per accedere alle informazioni sul glifo del font per il simbolo 'A'.
      //Verifica anche che il carattere abbia l'oggetto TtfGlyfTable (tabella 'glyf') per accedere al glifo.
      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());

          //Codice per il simbolo 'A'
          char unicode = (char)65;

          //Indice glifo per 'A'
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //Glifo per 'A'
              Glyph glyph = font.getGlyphById(glIndex);
              if (glyph != null)
              {
                  //Stampa le metriche dei glifi
              	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)));
              }
          }
      }

Estrai le metriche dei caratteri dal carattere Type1 utilizzando Java

// Per esempi completi e file di dati, vai a 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);

Conclusione

In questo articolo, hai imparato a lavorare con i caratteri CFF, TrueType e Type1 a livello di codice utilizzando Java. Inoltre, hai visto come accedere alle informazioni sulla metrica dei caratteri di un carattere specifico. Puoi esplorare di più sull’API di manipolazione dei caratteri Java utilizzando documentazione e campioni di codice sorgente.