Java를 사용하여 TrueType 및 OpenType 글꼴의 라이선스 제한 추출
소프트웨어 애플리케이션, 문서 생성 엔진 또는 웹 플랫폼에서 디지털 글꼴을 사용할 때는 글꼴 라이선스 제한을 준수하는 것이 중요합니다. 글꼴 공급업체는 글꼴을 포함하거나 설치 또는 수정할 수 있는 방법을 정의하기 위해 라이선스 및 사용 규칙을 글꼴 파일에 직접 포함합니다. Aspose.Font for Java를 사용하면 개발자는 포함된 OS/2 테이블 메트릭을 검사하고 TrueType (.ttf) 및 OpenType (.otf) 글꼴 파일에서 라이선스 제한을 프로그래밍 방식으로 추출할 수 있습니다.
글꼴 라이선스 모드 이해
TrueType 및 OpenType 글꼴 사양은 글꼴의 OS/2 테이블에 있는 fsType 플래그에 포함 권한을 저장합니다. Aspose.Font for Java는 LicenseFlags 클래스를 통해 이러한 포함된 라이선스 제한을 여러 모드로 분류합니다:
- 설치 가능한 포함: 글꼴을 포함하고 원격 시스템에 영구적으로 설치하거나 다른 사용자가 사용할 수 있습니다.
- 편집 가능한 포함: 글꼴을 포함하고 다른 시스템에서 일시적으로 로드할 수 있습니다. 포함된 글꼴을 사용하여 새 텍스트의 서식을 지정하는 것을 포함하여 편집이 허용되며 변경 사항을 저장할 수 있습니다.
- 미리 보기 및 인쇄용 포함: 글꼴을 포함하고 다른 시스템에서 일시적으로 로드할 수 있지만, 문서를 보거나 인쇄하는 용도로만 사용할 수 있습니다.
- 제한된 라이선스 포함: 법적 소유자로부터 명시적인 허가를 사전에 받지 않고는 어떤 방식으로도 글꼴을 수정, 포함 또는 교환해서는 안 됩니다.
Java에서 TTF 라이선스 제한 추출
Aspose.Font for Java를 사용하여 라이선스 권한을 읽으려면:
FontFileDefinition및FontDefinition을 사용하여 글꼴 파일을 로드하고FontType.TTF.를 지정합니다.- 글꼴의 테이블 컬렉션(
getTtfTables().getOs2Table())에서OS/2테이블을 가져옵니다. getLicenseFlags()를 사용하여 라이선스 플래그를 가져옵니다.isEditableEmbedding(),isInstallableEmbedding(),isPreviewAndPrintEmbedding()또는isRestrictedLicenseEmbedding()과 같은 도우미 메서드를 사용하여 포함 권한을 평가합니다.
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);
LicenseFlags licenseFlags = null;
if (font.getTtfTables().getOs2Table() != null)
{
licenseFlags = font.getTtfTables().getOs2Table().getLicenseFlags();
}
if (licenseFlags == null || licenseFlags.isFSTypeAbsent())
{
System.out.println(MessageFormat.format("Font {0} has no embedded license restrictions", font.getFontName()));
}
else
{
if (licenseFlags.isEditableEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded on other systems."
+ " In addition, editing is permitted, including ability to format new text"
+ " using the embedded font, and changes may be saved.", font.getFontName()));
}
else if (licenseFlags.isInstallableEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be permanently installed"
+ " for use on a remote systems, or for use by other users.", font.getFontName()));
}
else if (licenseFlags.isPreviewAndPrintEmbedding())
{
System.out.println(MessageFormat.format("Font {0} may be embedded, and may be temporarily loaded"
+ " on other systems for purposes of viewing or printing the document.", font.getFontName()));
}
else if (licenseFlags.isRestrictedLicenseEmbedding())
{
System.out.println(MessageFormat.format("Font {0} must not be modified, embedded or exchanged in any manner"
+ " without first obtaining explicit permission of the legal owner.", font.getFontName()));
}
}설치 및 설정
Maven을 통해 Aspose.Font for Java를 프로젝트에 포함합니다.
Package Manager Console Command
<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>Latest</version>
</dependency>
FAQ
1. Type1 글꼴은 LicenseFlags를 사용하여 라이선스 제한 사항을 추출할 수 있도록 지원하나요?
아니요. 표준 Type1 글꼴 형식(.pfb/.pfa)에는 OS/2 테이블이 포함되어 있지 않습니다. fsType 플래그와 OS/2 테이블 구조는 TrueType(.ttf) 및 OpenType(.otf) 글꼴 형식에만 해당합니다.
2. licenseFlags.isFSTypeAbsent()가 true를 반환하면 무엇을 의미하나요?
isFSTypeAbsent()가 true를 반환하거나 licenseFlags가 null인 경우, 글꼴 파일의 OS/2 테이블에 포함된 라이선스 제한 플래그가 없음을 나타냅니다.
3. 글꼴에서 문서 콘텐츠의 편집을 허용하는지 어떻게 확인할 수 있나요?
licenseFlags.isEditableEmbedding()을 확인할 수 있습니다. 값이 true이면 글꼴의 임시 로드 및 편집이 허용되므로 사용자는 포함된 글꼴을 사용하여 새 텍스트의 서식을 지정하고 변경 사항을 저장할 수 있습니다.