如何在智能设备开发中使用ORIYA字体?

时间:2011-06-21 09:59:30

标签: c# compact-framework

我正在为基于WINDOWS CE5.0的设备开发应用程序。它要求完全使用ORIYA语言(INDIAN REGIONAL LANGUAGE)。视觉工作室使用ENGLISH作为标准语言,请告诉我如何进行?我试图在WINDOWS CE设备的WINDOWS / FONTS文件夹中复制字体,但是当我重启设备时,字体文件消失了。我在c#中开发了应用程序,并在开发系统中将标签文本更改为oriyaa。它在开发系统上看起来很好但是当我将它部署到设备中时,所有标签文本都以英文显示。我不知道发生了什么事?我还需要在ORIYA语言中设置LABEL.TEXT属性。可能吗?如何在ORIYA中获取用户输入?请帮忙.....谢谢...

2 个答案:

答案 0 :(得分:1)

不太确定浏览器的含义,但Forms可以使用PrivateFontCollection

您可以从应用中的文件夹加载字体,然后使用 根据您的需要AddFontFileAddMemoryFont。因此,现在客户端可以看到您设置的字体中的控件及其可用的控件,无论其是否已安装

答案 1 :(得分:0)

我使用以下方法使用基于英语的字体,但我不确定它是否适用于您的情况。这种方法的原始来源是来自Chris Tacke(SO用户@ctacke)的nice post,并进行了一些修改。

    [DllImport("coredll.dll")]
    private static extern int AddFontResource(string lpszFilename);
    [DllImport("coredll.dll", SetLastError = true)]
    private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
    static IntPtr HWND_BROADCAST = (IntPtr)0xFFFF;
    const int WM_Fontchange = 0x001D;

    private static void RegisterFont(string aFontPath, string aTargetFontPath)
    {
        IntPtr thir = (IntPtr)0;
        IntPtr fourth = (IntPtr)0;
        try
        {
            if (!System.IO.File.Exists(aTargetFontPath))
                System.IO.File.Copy(aFontPath, aFontTargetPath);
        }
        catch { throw; }
        int _Loaded = AddFontResource(aFontTargetPath);
        if (_Loaded != 0)
            SendMessage(HWND_BROADCAST, WM_Fontchange, thir, fourth);
    }