.NET Font Management API

בדיגיטל טיפוגרפיה, גופנים מגדירים סגנונות מסוימים לשימוש עבור המראה של הדמויות. לרוב, הגופנים משמשים במסמכים ובדפי האינטרנט כדי לסגנן את הטקסט. כל גופן מתואר בקובץ המכיל מידע על גודל התווים, משקלם, הסגנונות וכן הקידוד. מכיוון שגופנים הם חלק חשוב בפורמטים השונים של הקבצים, Aspose מציעה API ייעודי להתמודדות עם מניפולציה ועיבוד של סוגי גופנים פופולריים כולל TrueType, CFF, OpenType, ו-Type1. במאמר זה תלמדו כיצד לטעון, לשמור ולחלץ מידע מגופנים באמצעות C# עם Aspose.Font for .NET.

.NET Font Manipulation API - הורדה חינם

Aspose.Font for .NET הוא ממשק API מקומי המאפשר לך ליישם את תכונות ניהול הגופנים באמצעות C# בתוך יישומי NET שלך. יחד עם טעינה, שמירה וחילוץ מידע מהגופן, ה-API מאפשר לך גם להציג את הגליף או הטקסט במידת הצורך. אתה יכול להוריד את ה-API או להתקין אותו בתוך יישומי NET שלך באמצעות NuGet.

PM> Install-Package Aspose.Font

טען או שמור גופנים מקובץ באמצעות C#

אתה יכול לטעון גופן מהקובץ המאוחסן באחסון הדיגיטלי שלך לצורך אחזור המידע של הגופן. Aspose.Font עבור .NET חושף מחלקות נפרדות להתמודדות עם סוגי הגופנים המסוימים, כלומר CFF, TrueType וכו’. להלן השלבים לטעינה ושמירת גופן.

  • טען את הגופן מהקובץ (באמצעות הנתיב של הקובץ או מערך הבתים) באמצעות המחלקה FontDefinition.
  • גש למידע של גופן באמצעות CffFont, TtfFont, או Type1Font מחלקה.
  • שמור את הקובץ (אם נדרש).

טען ושמור גופן CFF

דוגמת הקוד הבאה מראה כיצד לטעון ולשמור גופני CFF באמצעות C#.

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
//מערך בתים לטעינת גופן ממנו
string dataDir = RunExamples.GetDataDir_Data();

byte[] fontMemoryData = File.ReadAllBytes(dataDir + "OpenSans-Regular.cff");
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData)));
CffFont cffFont = Aspose.Font.Font.Open(fd) as CffFont;

//עבודה עם נתונים מאובייקט CffFont שנטען זה עתה

//שמור CffFont בדיסק
//שם קובץ גופן פלט עם נתיב מלא
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

טען ושמור גופן TrueType

דוגמת הקוד הבאה מראה כיצד לטעון ולשמור גופני TrueType באמצעות C#.

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
//מערך בתים לטעינת גופן ממנו
string dataDir = RunExamples.GetDataDir_Data();
            
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "Montserrat-Regular.ttf");
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new ByteContentStreamSource(fontMemoryData)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

//עבודה עם נתונים מאובייקט TtfFont שזה עתה נטען

//שמור TtfFont בדיסק
//פלט שם קובץ גופן עם נתיב מלא
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

טען ושמור גופן Type1

דוגמת הקוד הבאה מראה כיצד לטעון ולשמור גופנים מסוג Type1 באמצעות C#.

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

חלץ מדדי גופן באמצעות C#

Aspose.Font עבור .NET מאפשר לך גם לאחזר את מידע מדדי הגופן כגון Ascender, Descender, TypoAscender, TypoDescender ו-UnitsPerEm. להלן השלבים לעשות זאת.

  • השתמש במחלקה FontDefinition כדי לטעון גופן TrueType או Type1 מהקובץ.
  • פתח את הגופן באמצעות מחלקת סוג הגופן המתאימה, כלומר Type1Font, TtfFont וכו'.
  • גש למידע המדדים של הגופן.

דוגמאות הקוד הבאות מראות כיצד לחלץ מדדי גופנים מגופני TrueType ו-Type1 באמצעות C#.

חלץ מדדים מגופן TrueType

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = Aspose.Font.Font.Open(fd) as TtfFont;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

//קבל את טבלת הקידוד cmap unicode מגופן כאובייקט TtfCMapFormatBaseTable כדי לגשת למידע על גליף גופן עבור סמל 'A'.
//בדוק גם שלגופן יש אובייקט TtfGlyfTable (טבלה 'glyf') כדי לגשת לגליף.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
    cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
    Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);

    //קוד לסמל 'A'
    char unicode = (char)65;

    //אינדקס גליפים עבור 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //גליף עבור 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //הדפס מדדי גליפים
            Console.WriteLine("Glyph metrics for 'A' symbol:");
            string bbox = string.Format(
                "Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
                glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
                glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
            Console.WriteLine(bbox);
            Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
        }
    }
}

חלץ מדדים מגופן Type1

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

זיהוי סמלים לטיניים בגופנים באמצעות C#

אתה יכול גם לזהות טקסט לטיני בגופנים על ידי פענוח קודי הגליפים באמצעות Aspose.Font עבור NET. להלן השלבים לביצוע פעולה זו.

  • טען את הגופן מהקובץ באמצעות המחלקה FontDefinition.
  • פענח את ה-GlyphId באמצעות שיטת DecodeToGid() של מחלקת הגופן המתאימה.

דוגמאות הקוד הבאות מראות כיצד לפענח סמלים לטיניים בגופני TrueType ו-Type1 באמצעות C#.

זיהוי סמלים לטיניים בגופן TrueType

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", ttfFont.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", ttfFont.FontName));
}

זיהוי סמלים לטיניים בגופן Type1

// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName));
}

סיכום

במאמר זה, ראית כיצד לטעון ולשמור גופנים CFF, TrueType ו-Type1 באופן תכנותי באמצעות C#. יתר על כן, למדת כיצד לחלץ מידע על מדדי גופנים מגופני TrueType ו-Type1 בתוך יישומי NET שלך. אתה יכול לחקור תכונות מעניינות יותר שמציע Aspose.Font עבור .NET בתיעוד. לעדכונים נוספים, המשך לבקר ב-Aspose.Font בלוג.