자바에서 글꼴 조작

글꼴은 문서 및 웹 페이지 내에서 텍스트를 표시하는 데 중요한 역할을 합니다. 텍스트를 매력적으로 만들기 위해 멋진 문자를 사용할 수 있는 다양한 글꼴 모음을 사용할 수 있습니다. Aspose는 파일 형식 자동화를 다루기 때문에 글꼴 파일 형식으로 작업할 수 있는 전용 글꼴 조작 API를 출시했습니다. 이 기사에서는 Java 글꼴 API에 익숙해지고 Java 애플리케이션 내에서 CFF, TrueType, OpenType 및 Type1 글꼴을 사용하는 방법을 배웁니다.

자바 글꼴 조작 API

Aspose.Font for JavaCFF, TrueType, Type1, EOTOpenType. 또한 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>

Java를 사용하여 CFF, TrueType 및 Type1 글꼴 로드

Java 프로그램 내에서 저장소에 있는 파일에서 글꼴을 쉽게 로드할 수 있습니다. 글꼴을 로드한 후에는 필요에 따라 추가 작업을 수행할 수 있습니다. 다음은 Aspose.Font for Java를 사용하여 글꼴을 로드하는 단계입니다.

  • FontDefinition 클래스를 사용하여 TrueType, Type1 등과 같은 유형을 지정하여 글꼴을 로드합니다.
  • CffFont, TtfFont 또는 Type1Font 클래스를 사용하여 FontDefinition 개체에서 각각 CFF, TrueType 및 Type1 글꼴에 액세스합니다.

Java를 사용하여 CFF 글꼴 로드

Java를 사용하여 파일에서 CFF 글꼴을 로드하는 방법입니다.

// 전체 예제 및 데이터 파일을 보려면 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");

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

Java를 사용하여 Type1 글꼴 로드

다음 코드 샘플은 Java를 사용하여 Type1 글꼴을 로드하는 방법을 보여줍니다.

// 전체 예제 및 데이터 파일을 보려면 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);

Java를 사용하여 TrueType 또는 Type1 글꼴에서 글꼴 메트릭 추출

글꼴 파일에는 줄 간격, 아래 첨자와 위 첨자 배치, 정렬 등을 지정하는 데 사용되는 글꼴 정보도 포함되어 있습니다. Java용 Aspose.Font를 사용하면 Ascender, Descender, TypoAscender, TypoDescender를 포함한 글꼴 메트릭 정보를 추출할 수도 있습니다. 및 UnitsPerEm. 다음은 이 작업을 수행하는 단계입니다.

  • FontDefinition 클래스를 사용하여 TrueType 또는 Type1 글꼴을 로드합니다.
  • 글꼴 유형에 따라 TtfFont 또는 Type1Font 클래스를 사용하여 글꼴에 접근합니다.
  • 글꼴의 메트릭 정보를 추출합니다.

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

      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);
      
    //글꼴에서 개체 TtfCMapFormatBaseTable로 cmap 유니코드 인코딩 테이블을 가져와 기호 '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());

          //'A' 기호에 대한 코드
          char unicode = (char)65;

          //'A'에 대한 글리프 인덱스
          long glIndex = cmapTable.getGlyphIndex(unicode);

          if (glIndex != 0)
          {
              //'A'에 대한 글리프
              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)));
              }
          }
      }

Java를 사용하여 Type1 글꼴에서 글꼴 메트릭 추출

// 전체 예제 및 데이터 파일을 보려면 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);

결론

이 기사에서는 Java를 사용하여 프로그래밍 방식으로 CFF, TrueType 및 Type1 글꼴을 사용하는 방법을 배웠습니다. 또한 특정 글꼴의 글꼴 메트릭 정보에 액세스하는 방법을 살펴보았습니다. 문서소스 코드 샘플을 사용하여 Java 글꼴 조작 API에 대해 자세히 알아볼 수 있습니다.