telesto@telesto-VirtualBox:~/bibisect-42max$ git bisect bad ac6f8204aa613314701d6ab0a5f25e2c50480dff is the first bad commit commit ac6f8204aa613314701d6ab0a5f25e2c50480dff Author: Matthew Francis Date: Sat Sep 5 18:31:33 2015 +0800 source-hash-6db39dbd7378351f6476f6db25eb7110c9cfb291 commit 6db39dbd7378351f6476f6db25eb7110c9cfb291 Author: Michael Stahl AuthorDate: Sat Jun 15 21:25:27 2013 +0200 Commit: Michael Stahl CommitDate: Thu Jun 20 00:34:38 2013 +0200 fdo#52028: sw: let text formatting ignore RSID in automatic styles A suprising regression from 062eaeffe7cb986255063bb9b0a5f3fb3fc8e34c: The RSID text attributes that are inserted for every user-inserted text cause the text formatting (SwAttrIter) to create a lot more text portions, and the portion breaks make font kerning impossible. This is the only way i can think of to fix this problem; alternatives that don't work are splitting the RSID out of the AUTOFMT hint into a separate one and combining them in the sw UNO wrappers (fails because SwXAutoStylesEnumerator actually does need to enumerate every AUTOFMT including RSID), trying to detect and ignore them just in the text formatting (the SwAttrIter cannot easily/cheaply detect when it's allowed to skip), and having an internal subdivision inside the AUTOFMT hint (one subsection for every RSID change) (which does not work because it cannot ignore RSID-only AUTOFMTs completely). Solve the problem with 2 additional flags on AUTOFMT and CHARFMT attributes: FormatIgnoreStart and FormatIgnoreEnd, which indicate to SwAttrIter::GetNextAttr() that the start or end of the hint should be ignored, so that effectively it is merged with the preceding/subsequent hint. Of course the UNO API does not respect the flags so we can store the RSIDs in automatic styles. The flags are maintained in SwpHints::MergePortions, which detects both RSID-only AUTOFMT hints (which can be ignored completely), and the situation of N CHARFMT hints + AUTOFMT hint vs. N CHARFMT hints + AUTOFMT hint where the AUTOFMT hints differ only in their RSID attribute. This means that MergePortions needs to be called more often now, in cases where the ignore flags may have been invalidated, such as: - insertion of text with possible DontExpand flag set on hints - deletion of hints - SETATTR_NOHINTADJUST mode Change-Id: I1fb95a87c654c67d114f6f7f2c43b847c50b0ffa :040000 040000 3169962b5915bfe7a2a6aafc5ffa9bbae55a41ed 6b49eaf2aa2175bd1bd5d2566283acafe5554465 M opt telesto@telesto-VirtualBox:~/bibisect-42max$ git bisect log # bad: [8775b1622f226e863b864de7e208226cbfb914e3] source-hash-22ea573b7417db0392c006dff06cde50ddbcd469 # good: [b3c6cf289ff72449408fa01958092d9e482e82bd] source-hash-a2c9d4f8bbde97f175bae4df771273a61251f402 git bisect start 'origin/master' 'oldest' # bad: [be115ebaad667aefcc0366ce23d6bc7013060424] source-hash-5e6b2d0e4a55be8a4f57ecfe55248d7924d4f0b7 git bisect bad be115ebaad667aefcc0366ce23d6bc7013060424 # skip: [5ebca0edc8770a0f1d11b8a88c0dd2b389c189e3] source-hash-15cf5afea05f0539035a1393b3150121489eb561 git bisect skip 5ebca0edc8770a0f1d11b8a88c0dd2b389c189e3 # skip: [8efcbbea77314696f7c387be28eb1afe8618c1c8] source-hash-9e8e5568e2a566119ab57e1653f72f59f7169e94 git bisect skip 8efcbbea77314696f7c387be28eb1afe8618c1c8 # skip: [c6b9f724813937430f86e13dbd59afb8339e29e1] source-hash-a86af5919e19d989ee9344071b1bb13140cb83ef git bisect skip c6b9f724813937430f86e13dbd59afb8339e29e1 # bad: [e873164df2e9e79aacd8885d624fe65bb6cb7812] source-hash-608dec14f1fd7b46b294da9341a6da6a24caef91 git bisect bad e873164df2e9e79aacd8885d624fe65bb6cb7812 # skip: [87fb9795a9f58ec025d35edeb28557125a27f9a0] source-hash-85ce60d4c43d35b9673ed22f4a4adaa4928349be git bisect skip 87fb9795a9f58ec025d35edeb28557125a27f9a0 # bad: [b8a30355bea6922acde16c08b8742d2f629e9913] source-hash-942501b6e49c6c9e19556d9ec132a458e5fef6c3 git bisect bad b8a30355bea6922acde16c08b8742d2f629e9913 # good: [f14480891d2a26b9d427442664ee4230f1fda84f] source-hash-5fcd67d436d3a3a0f5332b5a5078e135e40c898b git bisect good f14480891d2a26b9d427442664ee4230f1fda84f # skip: [99e1a6455944a4fb2b38a7cd9fa48bd7c11d4654] source-hash-fd2bd50bb4fbe139cd1ed9332c0d2eeaebc7dabe git bisect skip 99e1a6455944a4fb2b38a7cd9fa48bd7c11d4654 # bad: [ab6280d4af81165f85c9bbec9cd2d71edaf73526] source-hash-1ec3fac48866c27d0c4b6ffb44befcba66d1f229 git bisect bad ab6280d4af81165f85c9bbec9cd2d71edaf73526 # bad: [f86a411f1828013fbcd0e8c7760d3638034078a9] source-hash-ddddfe8d6ffa05c467bddb3480e43d7043a3d3c9 git bisect bad f86a411f1828013fbcd0e8c7760d3638034078a9 # good: [793e34f8eb15267f12e0e9ffbbda56d521e2c149] source-hash-88085a5b79eb7e11c0609b832c316b63146f4976 git bisect good 793e34f8eb15267f12e0e9ffbbda56d521e2c149 # bad: [62ec09f57f14f07792bec4d374ddfe35696835b0] source-hash-363dafefad14411a16f6ea9d2ee0d55b67bc9c8d git bisect bad 62ec09f57f14f07792bec4d374ddfe35696835b0 # good: [16cb3dffed49036392bd6f17e39b0280e7655d0a] source-hash-02da9f7a917ffc68dfe7a44c8d03b272cb5bfc18 git bisect good 16cb3dffed49036392bd6f17e39b0280e7655d0a # good: [156c78b1f8006522add4c4dbbe5d1c765932705c] source-hash-41efa1535827b3dfef66ed4ce6c20e85081fe060 git bisect good 156c78b1f8006522add4c4dbbe5d1c765932705c # good: [f909f35f5e3f4bde37cd8f5e74701dde7c7309f3] source-hash-4f3287c8b8e72dcad9539c95b8d14ac7bebd35d7 git bisect good f909f35f5e3f4bde37cd8f5e74701dde7c7309f3 # bad: [5a73753dad89e0bec81c6dc99dabbdc7ac0d2bad] source-hash-d0db3134653cfc0e3c59e25203728a02865ceead git bisect bad 5a73753dad89e0bec81c6dc99dabbdc7ac0d2bad # good: [f59501126985118753a567842ebeb7bdb852b105] source-hash-e012f326c1c32c053304998a6826cb322f2c7728 git bisect good f59501126985118753a567842ebeb7bdb852b105 # bad: [126a1823bec380629b355c0ef94fce5f34f12f07] source-hash-fe444d1f74abe417962be0bcd3340f40f2446b58 git bisect bad 126a1823bec380629b355c0ef94fce5f34f12f07 # bad: [ac6f8204aa613314701d6ab0a5f25e2c50480dff] source-hash-6db39dbd7378351f6476f6db25eb7110c9cfb291 git bisect bad ac6f8204aa613314701d6ab0a5f25e2c50480dff # first bad commit: [ac6f8204aa613314701d6ab0a5f25e2c50480dff] source-hash-6db39dbd7378351f6476f6db25eb7110c9cfb291