From b9d629c731e5ff928a150cc274a015e6ba977ee6 Mon Sep 17 00:00:00 2001 From: igt0 Date: Sat, 16 Sep 2017 16:50:17 -0300 Subject: [PATCH] bug 23104 - Add a default line height compensation Many fonts have issues with their vertical metrics. they are used to influence the height of ascenders and depth of descenders. Gecko uses it to calculate the line height (font height + ascender + descender), however because of that idiosyncratic behavior across multiple operating systems, it can be used to identify the user's OS. The solution proposed in the patch uses a default factor to be multiplied with the font size, simulating the concept of ascender and descender. This way all operating systems will have the same line height. --- layout/generic/ReflowInput.cpp | 6 ++++ tbb-tests/mochitest.ini | 1 + tbb-tests/test_tor_bug23104.html | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 tbb-tests/test_tor_bug23104.html diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp index 42f4a24b53149..e219ae032cc64 100644 --- a/layout/generic/ReflowInput.cpp +++ b/layout/generic/ReflowInput.cpp @@ -30,6 +30,7 @@ #include "CounterStyleManager.h" #include #include "mozilla/dom/HTMLInputElement.h" +#include "nsContentUtils.h" #ifdef DEBUG #undef NOISY_VERTICAL_ALIGN @@ -2768,6 +2769,11 @@ GetNormalLineHeight(nsFontMetrics* aFontMetrics) nscoord externalLeading = aFontMetrics->ExternalLeading(); nscoord internalLeading = aFontMetrics->InternalLeading(); nscoord emHeight = aFontMetrics->EmHeight(); + + if (nsContentUtils::ShouldResistFingerprinting()) { + return NSToCoordRound(emHeight * NORMAL_LINE_HEIGHT_FACTOR); + } + switch (GetNormalLineHeightCalcControl()) { case eIncludeExternalLeading: normalLineHeight = emHeight+ internalLeading + externalLeading; diff --git a/tbb-tests/mochitest.ini b/tbb-tests/mochitest.ini index 3d2e7c9db8036..fca972a512111 100644 --- a/tbb-tests/mochitest.ini +++ b/tbb-tests/mochitest.ini @@ -10,3 +10,4 @@ support-files = [test_tor_bug2875.html] [test_tor_bug4755.html] [test_tor_bug5856.html] +[test_tor_bug23104.html] diff --git a/tbb-tests/test_tor_bug23104.html b/tbb-tests/test_tor_bug23104.html new file mode 100644 index 0000000000000..77d7d190d7c8a --- /dev/null +++ b/tbb-tests/test_tor_bug23104.html @@ -0,0 +1,51 @@ + + + + + Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running + + + + + +Test1 +كلمة +ação + + + -- GitLab