truetype yazı tipini c ++ oluştur

Karakterler, farklı kelimelerin anlamlarını açıklayan sembollerdir. Aspose.Font for C++ API ile C++ kullanarak TrueType yazı tipleri ile farklı metin karakterleri oluşturabilirsiniz. TrueType, Type1, OTF, EOT ve diğer yazı tipleri gibi farklı metin işleme özelliklerini destekler. Birkaç basit API çağrısıyla metin oluşturma özelliklerinin nasıl kullanılacağını keşfedelim. Konuyu aşağıdaki başlıklar altında ele alacağız:

C++ TrueType Font Oluşturma API’si – Kurulum

C++ platformunun popülaritesini ve talebini göz önünde bulundurarak Aspose.Font for C++ API’de çok kullanışlı özellikler sunduk. TrueType yazı tiplerini uygulamalarınızda işlemek için API’yi Yeni Sürümler‘den indirerek yapılandırmanız gerekir veya aşağıdaki komutu kullanarak NuGet aracılığıyla yükleyebilirsiniz:

Install-Package Aspose.Font.Cpp

C++ Kullanarak TrueType Yazı Tiplerini Oluşturmak İçin Glif Çizimi Arayüzü Uygulama

Öncelikle Aspose.Font.Rendering ad alanı altında IGlyphOutlinePainter uygulamanız gerekir. Yöntemlerin ve sınıfların uygulanması için aşağıdaki adımları izleyin:

  1. GlyphOutlinePainter adlı bir sınıf oluşturun
  2. Grafik çizmek için System.Drawing.Drawing2D.GraphicsPath kullanın

Glifleri çizmek için arayüzün uygulanmasına yönelik C++ kod parçacığı aşağıdadır:

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

İkinci olarak, lütfen aşağıdaki adımlarla DrawText adında bir yöntem oluşturun:

  1. Metin dizesindeki semboller arasında geçiş yapın
  2. GID’yi her sembol için tanımlanan glif olarak alın
  3. GlyphOutlinePainter oluşturun ve GlyphOutlineRenderer nesnesine geçin
  4. Matrix nesnesiyle Glif koordinatlarını belirtin

Ayrıca, tüm bu adımları izledikten sonra, aşağıdaki C++ kod parçacığında ayrıntılı olarak açıklandığı gibi, görüntüye yazı tipi boyutlarının hesaplanması için yardımcı yöntem oluşturun:

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, yazı tipinin dahili dpi'sidir
    return (width / fontSourceResulution) * fontSize * resolutionCorrection;
}

Metni C++ kullanarak TrueType Yazı Tipiyle Oluşturun

Metnin TrueType yazı tipleriyle işlenmesi için gerekli işlevselliği uyguladık. Şimdi aşağıdaki kod parçacığı olarak Aspose.Font for C++ API kullanan yöntemleri çağıralım:

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";
//Tam yol ile yazı tipi dosya adı
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";
//Tam yol ile yazı tipi dosya adı
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");

Çözüm

Bu makalede, C++ ile TrueType yazı tiplerini kullanarak metin oluşturmayı öğrendiniz. Aspose.Font for C++ API’nin sunduğu özellikler hakkında daha fazla bilgi edinmek ister misiniz? API referansları veya Ürün Belgeleri’ni keşfederek daha fazla ayrıntı öğrenebilirsiniz. Ancak, herhangi bir belirsizlikle karşılaşırsanız veya yardıma ihtiyacınız olursa, lütfen Ücretsiz Destek Forumları aracılığıyla bize ulaşmaktan çekinmeyin. Sizinle etkileşim kurmak için sabırsızlanıyoruz!

Ayrıca bakınız