asp.net 如何获取特定语言的字体系列列表?

to94eoyn  于 2024-01-09  发布在  .NET
关注(0)|答案(1)|浏览(153)

这是您取得所有字型系列清单的方式:

List<string> fonts = new List<string>();

    foreach (FontFamily font in FontFamily.Families)
    {
            fonts.Add(font.Name);
    }

字符串
我的网站让用户用自己的语言来写文字。让用户选择阿拉伯语/希伯来语,我只想给他显示字体家族列表。例如:'漫画无MS'不支持阿拉伯语/希伯来语。
谢谢.

j2qf4p5b

j2qf4p5b1#

此代码验证给定字体是否包含指定语言(如希伯来语或阿拉伯语)的Unicode范围内的至少一个字符。请注意,如果至少存在一个希伯来语字符,则函数返回true,而不确认对所有语言字符的支持。此外,函数不会检查希伯来语或阿拉伯语字符中的“Nikod”(Nikod)。

bool IsFontSupportsHebrew(string fontName)
    {
        // Define the Unicode range for Hebrew characters
        int hebrewStart = 0x0590;
        int hebrewEnd = 0x05FF;

        Typeface typeface = new Typeface(new FontFamily(fontName), FontStyles.Normal, FontWeights.Normal, FontStretches.Normal);
        GlyphTypeface glyphTypeface;

        if (typeface.TryGetGlyphTypeface(out glyphTypeface))
        {
            IDictionary<int, ushort> characterToGlyphMap = glyphTypeface.CharacterToGlyphMap;

            return characterToGlyphMap.Keys.Any(unicodeValue => unicodeValue >= hebrewStart && unicodeValue <= hebrewEnd);
        }
        else
        {
            return false;
            Console.WriteLine($"Unable to retrieve GlyphTypeface for {fontName}");
        }
    }

字符串
如果您想更改为阿拉伯字符,则应更改或调整Unicode范围,使其从0x0600到0x06FF。

相关问题