글꼴 정보 읽기

C++용 Aspose.Font API 솔루션으로 글꼴 측정항목을 살펴보세요. 모든 획, 곡선 및 뉘앙스에 대한 자세한 통찰력을 알아보세요. 당사의 솔루션을 사용하면 글리프 작업을 쉽게 수행할 수 있으므로 모든 글꼴의 고유한 특성에 대한 정보를 추출할 수 있습니다.

 

글꼴 변환, 글리프 조작, 라틴 기호 감지 등을 포함한 강력한 기능 키트를 제공하는 C++용 Aspose.Font API 솔루션으로 글꼴 가능성의 세계에 빠져보세요. 또한 API를 사용하면 글리프 작업을 수행하고 글꼴에 포함된 글리프에 대한 정보를 얻을 수 있습니다. C++용 Aspose.Font를 사용하여 디자인을 향상시키고, 프로젝트를 강화하고, 글리프의 잠재력을 최대한 활용하세요. 기다리지 말고 무료 평가판을 받아보세요!

글리프는 서체의 문자 또는 기호에 대한 고유한 디자인입니다. 이 글꼴 단위를 더 잘 이해하려면 Glyph 소개 기사를 읽어보세요. 서체의 시각적 모양을 설명합니다. 이러한 메트릭에는 문자 높이, 문자 너비, 문자 간 간격, 기준선 위치 등의 정보가 포함될 수 있습니다. 이를 통해 디자이너와 소프트웨어 개발자는 디지털 문서 및 사용자 인터페이스의 텍스트 레이아웃을 정확하게 예측할 수 있습니다.

이 페이지에서는 글리프 수, 문자 높이, 글리프 ‘A’의 너비 등과 같은 다양한 글꼴 메트릭을 검색하는 방법을 설명합니다. 그러나 글리프 작업의 전체 기능은 글리프 개체 사용 문서에 자세히 설명되어 있습니다. 코드 예제에는 글꼴 이름을 포함하여 글꼴 메타데이터 검색에 대한 섹션이 포함되어 있습니다. 이러한 유형의 기능은 Aspose 생태계에서 사용할 수 있는 Font Metadata 앱과 같은 웹 애플리케이션에 통합될 수 있습니다. 완전한 예제와 데이터 파일을 알고 싶다면 Aspose Github 프로젝트 로 이동하세요.

글꼴 메트릭을 받으려면 다음이 필요합니다.

  • Aspose.Font for C++ API는 기능이 풍부하고 강력하며 사용하기 쉬운 문서 조작 및 변환 API입니다.

  • NuGet 패키지 관리자를 열고 Aspose.Font를 검색하여 설치합니다. 패키지 관리자 콘솔에서 다음 명령을 사용할 수도 있습니다.

Package Manager Console Command


    PM> Install-Package Aspose.Font

C++를 사용하여 글꼴 메트릭을 가져오는 단계:

  1. TtfFont 클래스의 인스턴스를 만드는 글꼴에 대한 정보를 추출합니다.
  2. FontName 속성을 사용하여 글꼴 이름을 인쇄합니다.
  3. NumGlyphs 속성을 사용하여 글꼴의 글리프 수를 인쇄합니다. 어센더, 디센더, 오타 어센더, 오타 디센더 및 UnitsPerEm과 같은 글꼴 메트릭도 인쇄됩니다.
  4. 그런 다음 코드는 문자 코드를 글리프 인덱스에 매핑하는 데 사용되는 글꼴에서cmap 유니코드 인코딩 테이블을 검색합니다. 글꼴에 글리프에 액세스하는 데 사용되는 cmap 테이블과 glyf 테이블이 모두 있는지 확인합니다. 두 테이블이 모두 있는 경우 문자 A에 대한 glyf 인덱스를 검색한 다음 A 기호에 대한 글리프를 가져옵니다.
  5. A 글리프의 경계 상자와 너비를 인쇄합니다.

글꼴의 글리프에 대한 정보를 가져오는 C++ 코드

    using Aspose::Font;
    using Aspose::Font::Glyphs;
    using Aspose::Font::Ttf;
    //Font file name with the full path
    
    System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
    System::SharedPtr<TtfFont> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
    System::String name = font->get_FontName();
    System::Console::WriteLine(System::String(u"Font name: ") + name);
    System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
    System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
    System::Console::WriteLine(metrics);
    
    //Get cmap unicode encoding table from the font as object TtfCMapFormatBaseTable to access the information about the font glyph for symbol 'A'.
    //Also check that font has object TtfGlyfTable (table 'glyf') to access glyph.
    System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
    if (font->get_TtfTables()->get_CMapTable() != nullptr)
    {
        cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
    }
    if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
    {
        System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
        //Code for 'A' symbol
        char16_t unicode = (char16_t)65;
    
        //Glyph index for 'A'
        uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
        if (glIndex != static_cast<uint32_t>(0))
        {
            //Glyph for 'A'
            System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
            if (glyph != nullptr)
            {
                //Print glyph metrics
                System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
                System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
                System::Console::WriteLine(bbox);
                System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
            }
        }
    }



자주하는 질문

1. 글꼴 메트릭이란 무엇입니까?

글꼴이 화면에 렌더링되는 방식을 결정하는 속성입니다. 어센트, 디센트, 너비 및 커닝과 같은 일부 메트릭은 글리프 메트릭 과 유사합니다.

2. 글꼴 메트릭은 어떻게 얻나요?

작업할 글꼴을 지정합니다. Aspose.Font.IFontMetrics 클래스 인터페이스의 속성을 사용하여 필요한 글꼴 메트릭에 대한 정보를 추출합니다.

3. 글꼴 메타데이터란 무엇입니까?

글꼴 메타데이터는 기본적으로 그것에 대한 정보입니다. 여기에는 글꼴 이름, 글꼴 패밀리 이름, 포스트스크립트 이름, 라이선스, 작성자 및 디자이너 정보 등과 같은 많은 데이터가 포함됩니다.

4. 글꼴 메타데이터는 어떻게 변경합니까?

온라인에서 글꼴 정보를 보거나 변경하려면 Font Metadata 애플리케이션을 사용하세요.