Esempio n. 1
0
    /// <summary>
    /// Returns the font engine to be used on current platform according to user preferences
    /// </summary>
    /// <returns>
    /// The used font engine.
    /// </returns>
    public int GetUsedFontEngine()
    {
#if !TTFTEXT_LITE
        object f = null;

        int    fp         = 0;
        int    engine     = -1;
        object parameters = null;
        string fontid     = "";

        if ((!overrideFontId) && (stackparent != null))
        {
            return(stackparent.GetUsedFontEngine());
        }


        //if (AdvancedFontSelectionPolicy) {

        fp = PreferredEngine(Application.platform);


        try {
            parameters = GetFontEngineParameters(fp);
            if (parameters != null)
            {
                fontid = GetFontEngineFontIdD(fp);
                if (fontid == null)
                {
                    fontid = fontId;
                }
                f = TTFTextInternal.TTFTextFontEngine.font_engines [fp].GetFont(parameters, fontid);
                if (f != null)
                {
                    TTFTextInternal.TTFTextFontEngine.font_engines [fp].DisposeFont(f);
                    return(fp);
                }
            }
        } catch {
        }

        if (f == null)
        {
            for (fp = 0; fp < TTFTextInternal.TTFTextFontEngine.font_engines.Length; fp++)
            {
                try {
                    parameters = GetFontEngineParameters(fp);
                    if (parameters != null)
                    {
                        fontid = GetFontEngineFontIdD(fp);
                        f      = TTFTextInternal.TTFTextFontEngine.font_engines [fp].GetFont(parameters, fontid);
                        if (f != null)
                        {
                            TTFTextInternal.TTFTextFontEngine.font_engines [fp].DisposeFont(f);
                            return(fp);
                        }
                    }
                } catch {
                }
            }
        }
        //} else {

        /*	fp = 0;
         *      try {
         *              parameters = GetFontEngineParameters (fp);
         *              if (parameters != null) {
         *                      fontid = GetFontEngineFontIdD (fp);
         *                      f = TTFTextInternal.TTFTextFontEngine.font_engines [fp].GetFont (parameters, fontid);
         *              }
         *      } catch {
         *      }
         * }*/
        engine = fp;
        if (f != null)
        {
            TTFTextInternal.TTFTextFontEngine.font_engines [fp].DisposeFont(f);
        }
        return(engine);
#endif
#if TTFTEXT_LITE
        return(0);
#endif
    }