อ่านข้อมูลแบบอักษร
สำรวจการวัดแบบอักษรด้วยโซลูชัน Aspose.Font API สำหรับ C++ เรียนรู้ข้อมูลเชิงลึกโดยละเอียดเกี่ยวกับทุกจังหวะ เส้นโค้ง และความแตกต่างเล็กน้อย โซลูชันของเราช่วยให้คุณทำงานกับสัญลักษณ์ได้อย่างง่ายดาย ทำให้คุณสามารถดึงข้อมูลเกี่ยวกับลักษณะเฉพาะของแบบอักษรใดๆ ได้
ดำดิ่งสู่โลกแห่งความเป็นไปได้ของแบบอักษรด้วยโซลูชัน Aspose.Font API สำหรับ C++ ซึ่งมอบชุดคุณสมบัติอันทรงพลังให้กับคุณ รวมถึงการแปลงแบบอักษร การจัดการสัญลักษณ์ การตรวจจับสัญลักษณ์ละติน และอื่นๆ API ของเรายังช่วยให้คุณทำงานกับสัญลักษณ์ต่างๆ และรับข้อมูลเกี่ยวกับสัญลักษณ์ต่างๆ ที่รวมอยู่ในแบบอักษรได้ ยกระดับการออกแบบของคุณ เพิ่มพลังให้กับโปรเจ็กต์ของคุณ และปลดล็อกศักยภาพสูงสุดของสัญลักษณ์ด้วย Aspose.Font สำหรับ C++ อย่ารอช้าและทดลองใช้ฟรี!
สัญลักษณ์คือการออกแบบเฉพาะสำหรับอักขระหรือสัญลักษณ์ในแบบอักษร เพื่อให้เข้าใจหน่วยแบบอักษรนี้ได้ดีขึ้น โปรดอ่านบทความ อธิบายลักษณะที่ปรากฏของแบบอักษร เมตริกเหล่านี้อาจรวมถึงข้อมูลต่างๆ เช่น ความสูงของอักขระ ความกว้างของอักขระ ระยะห่างระหว่างอักขระ และตำแหน่งของบรรทัดฐาน และอื่นๆ ช่วยให้นักออกแบบและนักพัฒนาซอฟต์แวร์คาดการณ์เค้าโครงของข้อความในเอกสารดิจิทัลและอินเทอร์เฟซผู้ใช้ได้อย่างแม่นยำ
หน้านี้อธิบายวิธีเรียกเมตริกแบบอักษรต่างๆ เช่น จำนวนสัญลักษณ์ ความสูงของตัวอักษร ความกว้างของสัญลักษณ์ ‘A’ เป็นต้น อย่างไรก็ตาม ฟังก์ชันการทำงานทั้งหมดของการทำงานกับสัญลักษณ์มีอธิบายโดยละเอียดในบทความ การใช้วัตถุสัญลักษณ์ ตัวอย่างโค้ดมีส่วนในการดึงข้อมูลเมตาของฟอนต์ รวมถึงชื่อฟอนต์ ฟังก์ชันประเภทนี้สามารถรวมเข้ากับเว็บแอปพลิเคชัน เช่น แอป Font Metadata ที่มีอยู่ในระบบนิเวศ Aspose หากคุณต้องการเรียนรู้ตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ Aspose Github Project
ในการรับเมตริกแบบอักษร เราต้องการ:
Aspose.Font สำหรับ C++ API ซึ่งเป็น API การจัดการและการแปลงเอกสารที่มีคุณลักษณะหลากหลาย ทรงพลัง และใช้งานง่าย
เปิดตัวจัดการแพ็คเกจ NuGet และค้นหา Aspose.Font และติดตั้ง คุณสามารถใช้คำสั่งต่อไปนี้จาก Package Manager Console
Package Manager Console Command
PM> Install-Package Aspose.Font
ขั้นตอนในการรับเมตริกแบบอักษรโดยใช้ C++:
- แยกข้อมูลเกี่ยวกับแบบอักษรที่สร้างอินสแตนซ์ของคลาส TtfFont
- พิมพ์ชื่อฟอนต์โดยใช้คุณสมบัติ FontName
- พิมพ์จำนวนสัญลักษณ์ในแบบอักษรโดยใช้คุณสมบัติ NumGlyphs เมตริกแบบอักษร เช่น แอสเซนเดอร์, ดาวน์เดอร์, ไทโปแอสเซนเดอร์, ไทโปดาวน์เดอร์ และ UnitsPerEm จะถูกพิมพ์ด้วย
- จากนั้นโค้ดจะดึงตารางการเข้ารหัสยูนิโค้ด
cmap
จากฟอนต์ ซึ่งใช้ในการแมปโค้ดอักขระกับดัชนีสัญลักษณ์ จะตรวจสอบว่าแบบอักษรมีทั้งตารางcmap
และตารางglyf
ซึ่งใช้ในการเข้าถึงสัญลักษณ์หรือไม่ หากมีทั้งสองตาราง ตารางจะดึงดัชนีglyf
สำหรับอักขระA
จากนั้นจึงรับ glyph สำหรับสัญลักษณ์A
- พิมพ์กรอบของสัญลักษณ์
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. เมตริกแบบอักษรคืออะไร?
เป็นคุณสมบัติที่กำหนดวิธีการแสดงผลแบบอักษรบนหน้าจอ เมตริกบางอย่าง เช่น การขึ้น ทางลง ความกว้าง และการจัดช่องไฟ คล้ายกับ Glyph metrics
2. ฉันจะรับเมตริกแบบอักษรได้อย่างไร
ระบุแบบอักษรที่คุณต้องการใช้งาน ใช้คุณสมบัติของอินเทอร์เฟซคลาส Aspose.Font.IFontMetrics แยกข้อมูลเกี่ยวกับเมตริกแบบอักษรที่คุณต้องการ
3. ข้อมูลเมตาของแบบอักษรคืออะไร
Font Metadata เป็นข้อมูลเกี่ยวกับมัน ประกอบด้วยข้อมูลมากมาย เช่น ชื่อฟอนต์ ชื่อตระกูลฟอนต์ ชื่อ Postscript สิทธิ์การใช้งาน ข้อมูลผู้แต่งและผู้ออกแบบ และอื่นๆ อีกมากมาย
4. ฉันจะเปลี่ยนข้อมูลเมตาของแบบอักษรได้อย่างไร
หากต้องการดูหรือเปลี่ยนข้อมูลแบบอักษรทางออนไลน์ ให้ใช้แอปพลิเคชัน Font Metadata