• Michael Stahl's avatar
    fdo#38090: vcl: remove ImplFontCache::maFontNameList: · 835cae7e
    Michael Stahl yazdı
    The font cache in VCL returns different fonts for identical parameters,
    which causes layout differences in Writer.
    
    first we search the font with language 1054:
     debug: XXX 0x2103950   add to maFontNameList: TH SarabunPSK->waree
     p maFontNameList
     $9 = boost::unordered_map with 1 elements = {
       ["TH SarabunPSK"] = "waree"
     debug: XXX 0x2103950 found in maFontNameList: TH SarabunPSK->waree
    in this very same invocation the "waree" is then rerouted to Deja Vu
    (which can only be because it was called with language 1033):
     debug: XXX 0x2103950   add to maFontNameList: TH SarabunPSK->dejavusans
     p maFontNameList
     $11 = boost::unordered_map with 1 elements = {
       ["TH SarabunPSK"] = "dejavusans"
     }
     debug: XXX 0x2103950 found in maFontNameList: TH SarabunPSK->dejavusans
    
    - the selection of different fonts happens in
      FcPreMatchSubstititution::FindFontSubstitute.
    - we never get a direct cache hit from maFontInstanceList because there
      are some differences like WIDTH_DONTKNOW, and the maSearchName
    - the first time a font is searched, it ends up in maFontInstanceList
    - the second time a font is searched, it may end up in maFontNameList,
      which maps _only_ based on the name (appears to be an invalid optimization)
    - once we have TH SarabunPSK->dejavusans in maFontNameList we can never
      select the other one because apparently dejavusans covers all languages
    
    Change-Id: Ibd73de88d8fc3b6e1319eb34c261e55ea217a988
    (cherry picked from commit bb51791a)
    835cae7e
outdev.h 9.65 KB