
Tecken är symboler som förklarar betydelsen av olika ord. Du kan rendera olika texttecken med TrueType-teckensnitt med C++ med Aspose.Font for C++ API. Den stöder olika textåtergivningsfunktioner inklusive TrueType, Type1, OTF, EOT och andra typsnitt. Låt oss utforska hur man använder textåtergivningsfunktionerna med några enkla API-anrop. Vi kommer att täcka ämnet under följande rubriker:
- C++ TrueType Font Rendering API – Installation
 - Implementera gränssnitt för att rita glyph för att rendera TrueType-teckensnitt med C++
 - Rendera text med TrueType Font med C++
 
C++ TrueType Font Rendering API – Installation
Med tanke på populariteten och efterfrågan på C++-plattformen har vi introducerat mycket användbara funktioner i Aspose.Font for C++ API. För att rendera TrueType-teckensnitt i dina applikationer måste du konfigurera API:et genom att ladda ner det från New Releases, eller så kan du installera det via NuGet med följande kommando:
Install-Package Aspose.Font.Cpp
Implementera gränssnitt för att rita glyph för att rendera TrueType-teckensnitt med C++
Först och främst måste du implementera IGlyphOutlinePainter under namnområdet Aspose.Font.Rendering. Följ stegen nedan för implementering av metoder och klasser:
- Skapa en klass som heter GlyphOutlinePainter
 - Använd System.Drawing.Drawing2D.GraphicsPath för att rita grafik
 
Nedan är C++-kodavsnittet för implementering av gränssnitt för att rita glyfer:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr<System::Drawing::Drawing2D::GraphicsPath> path)
{
    _path = path;
}
void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr<Aspose::Font::RenderingPath::MoveTo> moveTo)
{
    _path->CloseFigure();
    _currentPoint.set_X((float)moveTo->get_X());
    _currentPoint.set_Y((float)moveTo->get_Y());
}
void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr<Aspose::Font::RenderingPath::LineTo> lineTo)
{
    float x = (float)lineTo->get_X();
    float y = (float)lineTo->get_Y();
    _path->AddLine(_currentPoint.get_X(), _currentPoint.get_Y(), x, y);
    _currentPoint.set_X(x);
    _currentPoint.set_Y(y);
}
void RenderingText::GlyphOutlinePainter::CurveTo(System::SharedPtr<Aspose::Font::RenderingPath::CurveTo> curveTo)
{
    float x3 = (float)curveTo->get_X3();
    float y3 = (float)curveTo->get_Y3();
    
    _path->AddBezier(_currentPoint.get_X(), _currentPoint.get_Y(), (float)curveTo->get_X1(), (float)curveTo->get_Y1(), (float)curveTo->get_X2(), (float)curveTo->get_Y2(), x3, y3);
    
    _currentPoint.set_X(x3);
    _currentPoint.set_Y(y3);
}
void RenderingText::GlyphOutlinePainter::ClosePath()
{
    _path->CloseFigure();
}
System::Object::shared_members_type Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::GetSharedMembers()
{
    auto result = System::Object::GetSharedMembers();
    
    result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_path", this->_path);
    result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_currentPoint", this->_currentPoint);
    
    return result;
}
För det andra, skapa en metod med namnet DrawText med följande steg:
- Gå igenom symboler i textsträngen
 - Få GID som glyf identifierad för varje symbol
 - Skapa GlyphOutlinePainter och gå över till objektet GlyphOutlineRenderer
 - Ange Glyfkoordinater med objektet Matrix
 
Dessutom, efter att ha följt alla dessa steg, skapa en verktygsmetod för beräkning av teckensnittsdimensioner till bild som utvecklas i följande C++-kodavsnitt:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
double RenderingText::FontWidthToImageWith(double width, int32_t fontSourceResulution, double fontSize, double dpi /* = 300*/)
{
    double resolutionCorrection = dpi / 72;
    // 72 är typsnittets interna dpi
    return (width / fontSourceResulution) * fontSize * resolutionCorrection;
}
Rendera text med TrueType Font med C++
Vi har implementerat den funktionalitet som krävs för rendering av text med TrueType-teckensnitt. Låt oss nu kalla metoderna som använder Aspose.Font för C++ API som kodavsnittet nedan:
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String dataDir = RunExamples::GetDataDir_Data();
    
System::String fileName1 = dataDir + u"Montserrat-Bold.ttf";
//Typsnittsfilnamn med fullständig sökväg
System::SharedPtr<FontDefinition> fd1 = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName1)));
System::SharedPtr<TtfFont> ttfFont1 = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd1));
    
System::String fileName2 = dataDir + u"Lora-Bold.ttf";
//Typsnittsfilnamn med fullständig sökväg
System::SharedPtr<FontDefinition> fd2 = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName2)));
System::SharedPtr<TtfFont> ttfFont2 = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd2));
    
DrawText(u"Hello world", ttfFont1, 14, System::Drawing::Brushes::get_White(), System::Drawing::Brushes::get_Black(), dataDir + u"hello1_montserrat_out.jpg");
DrawText(u"Hello world", ttfFont2, 14, System::Drawing::Brushes::get_Yellow(), System::Drawing::Brushes::get_Red(), dataDir + u"hello2_lora_out.jpg");
Slutsats
I den här artikeln har du lärt dig hur du renderar text med TrueType-teckensnitt med C++. Intresserad av att lära dig mer om funktionerna som erbjuds av Aspose.Font för C++ API? Du kan lära dig mer information genom att utforska API-referenser eller Produktdokumentation. Men om du möter någon tvetydighet eller behöver hjälp, vänligen kontakta oss via Free Support Forums. Vi ser fram emot att träffa dig!