• Eli Zaretskii's avatar
    Improve and future-proof OTF fonts support in w32uniscribe.c · ae7cfd0b
    Eli Zaretskii authored
    * src/w32uniscribe.c (uniscribe_otf_capability): Add commentary
    about the expected results and why the new Uniscribe APIs are not
    used in this function.
    (ScriptGetFontScriptTags_Proc, ScriptGetFontLanguageTags_Proc)
    (ScriptGetFontFeatureTags_Proc): New function typedefs.
    (uniscribe_new_apis): New static variable.
    (uniscribe_check_features): New function, implements OTF features
    verification while correctly accounting for features in the list
    after the nil member, if any.
    (uniscribe_check_otf_1): New function, retrieves the features
    supported by the font for the requested script and language using
    the Uniscribe APIs available from Windows Vista onwards.
    (uniscribe_check_otf): If the new Uniscribe APIs are available,
    use them in preference to reading the font data directly.  Call
    uniscribe_check_features to verify that the requested features are
    supported, replacing the original incomplete code.
    (syms_of_w32uniscribe): Initialize function pointers for the new
    Uniscribe APIs.  (Bug#21260)
    (otf_features): Scan the script, langsys, and feature arrays back
    to front, so that the result we return has them in alphabetical
    order, like ftfont.c does.
    * src/w32fns.c (syms_of_w32fns) <w32-disable-new-uniscribe-apis>:
    New variable for debugging w32uniscribe.c code.
w32uniscribe.c 36.5 KB