[PATCH v2 1/3] gdi32: Fix the truetype interpreter version problem.

Dmitry Timoshkov dmitry at baikal.ru
Mon Nov 5 00:49:09 CST 2018


Byeongsik Jeon <bsjeon at hanmail.net> wrote:

> The truetype bytecode interpreter of the Freetype appears to have the 
> following problems depending on the version.
> - v35: MS cleartype font(ex. Consolas) rendering is ugly.
> - v40: MS legacy font (ex. Tahoma) rendering is ugly. Some fonts return 
> the wrong values even for the glyph metrics. 
> 
> Is this a Freetype bug? Basically NOT.

Arguably this is a Freetype bug, applications should not fiddle with
underlying interpreter versions or even pretend to know anything about
truetype interpreter implementation details.

> +static void set_forced_interpreter_version(void)
> +{
> +    static const char property_name[] = "truetype:interpreter-version=";
> +    const char *env;
> +
> +    env = getenv( "WINE_GDI_PROPERTIES" );
> +    if ( env && (env = strstr( env, property_name )) )
> +    {
> +        forced_interpreter_version = atoi( env + sizeof(property_name) - 1 );
> +
> +        TRACE( "forced_interpreter_version = %d\n" , forced_interpreter_version );
> +    }
> +}

Usually Wine tries to avoid such ugly hacks.

> +        if (forced_interpreter_version == 0 && get_gasp_flags( ret, NULL, &gasp_version ))
> +        {
> +            ret->interpreter_version = 0;
> +
> +            if (gasp_version == 1)
> +            {
> +                if (interpreter_v40_supported)
> +                    ret->interpreter_version = 40;
> +                else if (interpreter_v38_supported)
> +                    ret->interpreter_version = 38;
> +            }
> +            else if (interpreter_v35_supported)
> +                ret->interpreter_version = 35;
> +        }

Shouldn't Freetype itself set appropriate interpreter version based on
GASP flags instead?

-- 
Dmitry.



More information about the wine-devel mailing list