[PATCH] fdo#38090: vcl: remove ImplFontCache::maFontNameList:

Michael Stahl (via Code Review) gerrit at gerrit.libreoffice.org
Wed Dec 19 12:19:50 PST 2012


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/1424

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/24/1424/1

fdo#38090: vcl: remove ImplFontCache::maFontNameList:

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
---
M vcl/inc/outdev.h
M vcl/source/gdi/outdev3.cxx
2 files changed, 0 insertions(+), 30 deletions(-)


--
To view, visit https://gerrit.libreoffice.org/1424
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd73de88d8fc3b6e1319eb34c261e55ea217a988
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Michael Stahl <mstahl at redhat.com>



More information about the LibreOffice mailing list