W poprzednim poście widziałeś, jak ładować i pracować z czcionkami CFF, TrueType, OpenType i Type1 od wewnątrz swoje aplikacje C++. Ten artykuł poprowadzi Cię o krok dalej, pokazując, jak programowo wykryć symbole łacińskie w czcionce przy użyciu języka C++. Po wykryciu możesz zdecydować, czy czcionka obsługuje symbole łacińskie, czy nie.
- C++ API do wykrywania symboli łacińskich w czcionkach
- Wykrywanie symboli łacińskich w czcionkach TrueType przy użyciu języka C++
- Wykryj symbole łacińskie w czcionkach Type1 za pomocą C++
C++ API do wykrywania symboli łacińskich w czcionkach
Aspose.Font for C++ to interfejs API do manipulacji i zarządzania czcionkami, który pozwala dość łatwo wykryć obsługę symboli łacińskich w czcionkach. Możesz pobrać interfejs API lub zainstalować go za pomocą NuGet.
PM> Install-Package Aspose.Font.Cpp
Wykryj symbole łacińskie w czcionkach TrueType w C++
Wykrywanie obsługi symboli łacińskich za pomocą Aspose.Font for C++ jest dziecinnie proste. Poniżej przedstawiono kroki, aby sprawdzić, czy dana czcionka TrueType obsługuje symbole łacińskie, czy nie.
- Utwórz obiekt klasy FontDefinition, aby załadować czcionkę, określając jej typ jako TrueType.
- Utwórz obiekt klasy TtfFont, aby uzyskać dostęp do informacji o czcionce.
- Przejrzyj możliwe kody i zdekoduj je na identyfikatory glifów.
- Dopasuj identyfikatory glifów, aby sprawdzić, czy symbole łacińskie są obsługiwane w źródłowej czcionce TrueType, czy nie.
Poniższy przykładowy kod pokazuje, jak wykryć symbole łacińskie w czcionkach TrueType przy użyciu języka C++.
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"Montserrat-Regular.ttf";
//Nazwa pliku czcionki z pełną ścieżką
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<TtfFont> ttfFont = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
bool latinText = true;
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
System::SharedPtr<GlyphId> gid = ttfFont->get_Encoding()->DecodeToGid(code);
if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
{
latinText = false;
}
}
if (latinText)
{
System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", ttfFont->get_FontName()));
}
else
{
System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", ttfFont->get_FontName()));
}
Wykryj symbole łacińskie w czcionkach Type1 w C++
Proces wykrywania symboli łacińskich w czcionkach Type1 jest taki sam, jak w przypadku czcionek TrueType. Jedyną różnicą jest użycie klasy Type1Font. Poniższe kroki przedstawiają pełny proces wykrywania symboli łacińskich w czcionkach Type1.
- Użyj klasy FontDefinition, aby załadować czcionkę, określając jej typ jako Type1.
- Użyj klasy Type1Font, aby uzyskać dostęp do informacji o czcionce.
- Przejrzyj możliwe kody i zdekoduj je na identyfikatory glifów.
- Dopasuj identyfikatory glifów, aby sprawdzić obsługę symboli łacińskich w dostarczonej czcionce Type1.
Poniższy przykładowy kod pokazuje, jak wykryć symbole łacińskie w czcionce Type1 przy użyciu języka C++.
For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"courier.pfb";
//Nazwa pliku czcionki z pełną ścieżką
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::Type1, System::MakeObject<FontFileDefinition>(u"pfb", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<Type1Font> font = System::DynamicCast_noexcept<Aspose::Font::Type1::Type1Font>(Aspose::Font::Font::Open(fd));
bool latinText = true;
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
System::SharedPtr<GlyphId> gid = font->get_Encoding()->DecodeToGid(code);
if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
{
latinText = false;
}
}
if (latinText)
{
System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", font->get_FontName()));
}
else
{
System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", font->get_FontName()));
}
Wniosek
W tym artykule nauczyłeś się, jak wykrywać symbole łacińskie w czcionkach TrueType i Type1 przy użyciu języka C++. Przykłady kodu w tym artykule pozwalają określić, czy symbole łacińskie są obsługiwane przez określoną czcionkę, czy nie. Możesz dowiedzieć się więcej o interfejsie API do manipulowania czcionkami w C++, korzystając z documentation.