tor-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
August 2015
- 15 participants
- 1322 discussions

[tor-browser-bundle/master] Update changelog + tag for #16672.
by mikeperry@torproject.org 08 Aug '15
by mikeperry@torproject.org 08 Aug '15
08 Aug '15
commit dd642b664e21a90d52fbc19689e9c44efd471392
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Sat Aug 8 13:53:25 2015 -0700
Update changelog + tag for #16672.
---
Bundle-Data/Docs/ChangeLog.txt | 1 +
gitian/versions.alpha | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 10fc5a1..9296cce 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -16,6 +16,7 @@ Tor Browser 5.5a1 -- August 11 2015
* Bug 16572: Verify cache isolation for XMLHttpRequests in Web Workers
* Bug 16311: Fix navigation timing in ESR 38
* Bug 15646: Prevent keyboard layout fingerprinting in KeyboardEvent (fixup)
+ * Bug 16672: Change font whitelists and configs for rendering issues (partial)
Tor Browser 5.0 -- August 11 2015
* All Platforms
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 840e8b9..27e4e65 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -8,7 +8,7 @@ FIREFOX_VERSION=38.2.0esr
TORBROWSER_UPDATE_CHANNEL=alpha
-TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.5-1-build1
+TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.5-1-build2
TOR_TAG=tor-0.2.7.2-alpha
TORLAUNCHER_TAG=0.2.7.7
TORBUTTON_TAG=1.9.3.3
1
0

[tor-browser-bundle/master] Remove the fallback conf.d line from fonts.conf.
by mikeperry@torproject.org 08 Aug '15
by mikeperry@torproject.org 08 Aug '15
08 Aug '15
commit 30dfe9f180659a5a841abfa737581ea3a9f31356
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Sat Aug 8 13:48:27 2015 -0700
Remove the fallback conf.d line from fonts.conf.
Doesn't solve all the issues in #16672, but seems to prevent reading the
system config dir, at least.
---
Bundle-Data/linux/Data/fontconfig/fonts.conf | 5 -----
1 file changed, 5 deletions(-)
diff --git a/Bundle-Data/linux/Data/fontconfig/fonts.conf b/Bundle-Data/linux/Data/fontconfig/fonts.conf
index 92b8aa3..ed236ac 100644
--- a/Bundle-Data/linux/Data/fontconfig/fonts.conf
+++ b/Bundle-Data/linux/Data/fontconfig/fonts.conf
@@ -72,11 +72,6 @@ PERFORMANCE OF THIS SOFTWARE.
</edit>
</match>
-<!--
- Load local system customization file
--->
- <include ignore_missing="yes">conf.d</include>
-
<!-- Font cache directory list -->
<cachedir prefix="xdg">fontconfig</cachedir>
1
0

[tor-browser-bundle/master] Install a Fontconfig configuration for linux.
by mikeperry@torproject.org 08 Aug '15
by mikeperry@torproject.org 08 Aug '15
08 Aug '15
commit b88443f6d8af62f763b069eb15e008a46d9b468a
Author: David Fifield <david(a)bamsoftware.com>
Date: Tue Sep 30 07:19:21 2014 +0000
Install a Fontconfig configuration for linux.
It limits font selection to those font files found in the Browser/fonts
directory, and standardizes settings such as hinting and antialiasing.
---
Bundle-Data/linux/Data/fontconfig/fonts.conf | 168 ++++++++++++++++++++++++++
RelativeLink/start-tor-browser | 4 +
2 files changed, 172 insertions(+)
diff --git a/Bundle-Data/linux/Data/fontconfig/fonts.conf b/Bundle-Data/linux/Data/fontconfig/fonts.conf
new file mode 100644
index 0000000..92b8aa3
--- /dev/null
+++ b/Bundle-Data/linux/Data/fontconfig/fonts.conf
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<!-- This file whitelists Tor Browser's bundled fonts and standardizes rendering settings. -->
+<!--
+Derived from fonts.conf.in of Fontconfig.
+
+Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard
+Copyright © 2005 Patrick Lam
+Copyright © 2009 Roozbeh Pournader
+Copyright © 2008,2009 Red Hat, Inc.
+Copyright © 2008 Danilo Šegan
+Copyright © 2012 Google, Inc.
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of the author(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The authors make no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+-->
+<fontconfig>
+
+<!-- Font directory list -->
+
+ <dir>fonts</dir>
+
+<!--
+ Accept deprecated 'mono' alias, replacing it with 'monospace'
+-->
+ <match target="pattern">
+ <test qual="any" name="family">
+ <string>mono</string>
+ </test>
+ <edit name="family" mode="assign" binding="same">
+ <string>monospace</string>
+ </edit>
+ </match>
+
+<!--
+ Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
+-->
+ <match target="pattern">
+ <test qual="any" name="family">
+ <string>sans serif</string>
+ </test>
+ <edit name="family" mode="assign" binding="same">
+ <string>sans-serif</string>
+ </edit>
+ </match>
+
+<!--
+ Accept deprecated 'sans' alias, replacing it with 'sans-serif'
+-->
+ <match target="pattern">
+ <test qual="any" name="family">
+ <string>sans</string>
+ </test>
+ <edit name="family" mode="assign" binding="same">
+ <string>sans-serif</string>
+ </edit>
+ </match>
+
+<!--
+ Load local system customization file
+-->
+ <include ignore_missing="yes">conf.d</include>
+
+<!-- Font cache directory list -->
+
+ <cachedir prefix="xdg">fontconfig</cachedir>
+
+ <config>
+<!--
+ These are the default Unicode chars that are expected to be blank
+ in fonts. All other blank chars are assumed to be broken and
+ won't appear in the resulting charsets
+ -->
+ <blank>
+ <int>0x0020</int> <!-- SPACE -->
+ <int>0x00A0</int> <!-- NO-BREAK SPACE -->
+ <int>0x00AD</int> <!-- SOFT HYPHEN -->
+ <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
+ <int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
+ <int>0x0601</int> <!-- ARABIC SIGN SANAH -->
+ <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
+ <int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
+ <int>0x06DD</int> <!-- ARABIC END OF AYAH -->
+ <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
+ <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
+ <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
+ <int>0x1680</int> <!-- OGHAM SPACE MARK -->
+ <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
+ <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
+ <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
+ <int>0x2000</int> <!-- EN QUAD -->
+ <int>0x2001</int> <!-- EM QUAD -->
+ <int>0x2002</int> <!-- EN SPACE -->
+ <int>0x2003</int> <!-- EM SPACE -->
+ <int>0x2004</int> <!-- THREE-PER-EM SPACE -->
+ <int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
+ <int>0x2006</int> <!-- SIX-PER-EM SPACE -->
+ <int>0x2007</int> <!-- FIGURE SPACE -->
+ <int>0x2008</int> <!-- PUNCTUATION SPACE -->
+ <int>0x2009</int> <!-- THIN SPACE -->
+ <int>0x200A</int> <!-- HAIR SPACE -->
+ <int>0x200B</int> <!-- ZERO WIDTH SPACE -->
+ <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
+ <int>0x200D</int> <!-- ZERO WIDTH JOINER -->
+ <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
+ <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
+ <int>0x2028</int> <!-- LINE SEPARATOR -->
+ <int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
+ <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
+ <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
+ <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
+ <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
+ <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
+ <int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
+ <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
+ <int>0x2060</int> <!-- WORD JOINER -->
+ <int>0x2061</int> <!-- FUNCTION APPLICATION -->
+ <int>0x2062</int> <!-- INVISIBLE TIMES -->
+ <int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
+ <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
+ <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
+ <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
+ <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
+ <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
+ <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
+ <int>0x2800</int> <!-- BRAILLE PATTERN BLANK -->
+ <int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
+ <int>0x3164</int> <!-- HANGUL FILLER -->
+ <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
+ <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
+ <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
+ <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
+ <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
+ </blank>
+<!--
+ Rescan configuration every 30 seconds when FcFontSetList is called
+ -->
+ <rescan>
+ <int>30</int>
+ </rescan>
+ </config>
+
+ <!-- Standardize rendering settings. -->
+ <match target="pattern">
+ <edit name="antialias" mode="assign"><bool>true</bool></edit>
+ <edit name="autohint" mode="assign"><bool>false</bool></edit>
+ <edit name="hinting" mode="assign"><bool>true</bool></edit>
+ <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
+ <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
+ <edit name="rgba" mode="assign"><const>none</const></edit>
+ </match>
+</fontconfig>
diff --git a/RelativeLink/start-tor-browser b/RelativeLink/start-tor-browser
index 638c0c0..f556389 100755
--- a/RelativeLink/start-tor-browser
+++ b/RelativeLink/start-tor-browser
@@ -340,6 +340,10 @@ EOF
# your password in the following line where the word “secret” is:
setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'}
+# Set up custom bundled fonts. See fonts-conf(5).
+export FONTCONFIG_PATH="${HOME}/TorBrowser/Data/fontconfig"
+export FONTCONFIG_FILE="fonts.conf"
+
cd "${HOME}"
# We pass all additional command-line arguments we get to Firefox.
1
0

[tor-browser-bundle/master] Update Noto font lists for bundles.
by mikeperry@torproject.org 08 Aug '15
by mikeperry@torproject.org 08 Aug '15
08 Aug '15
commit 2071c2e15c8b4108bdf4c1c368d91ffdfcab4230
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Thu Aug 6 17:22:21 2015 -0700
Update Noto font lists for bundles.
---
gitian/descriptors/linux/gitian-bundle.yml | 2 +-
gitian/descriptors/mac/gitian-bundle.yml | 2 +-
gitian/descriptors/windows/gitian-bundle.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 819a1de..f1d0554 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -123,7 +123,7 @@ script: |
#
# Install fonts.
mkdir -p tor-browser/Browser/fonts
- NOTO_FONTS_HINTED="Cousine-Regular.ttf NotoKufiArabic-Regular.ttf NotoNaskhArabic-Regular.ttf NotoSans-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerif-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
+ NOTO_FONTS_HINTED="Arimo-Regular.ttf Arimo-Bold.ttf Arimo-Italic.ttf Arimo-BoldItalic.ttf Cousine-Regular.ttf Tinos-Regular.ttf Tinos-Bold.ttf Tinos-Italic.ttf Tinos-BoldItalic.ttf NotoNaskhArabic-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
for fontfile in $NOTO_FONTS_HINTED; do
cp "noto-fonts/hinted/$fontfile" tor-browser/Browser/fonts/
done
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index 9b38d0f..a956fa7 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -126,7 +126,7 @@ script: |
#
# Install fonts.
mkdir -p $TORBROWSER_NAME.app/Contents/Resources/fonts
- NOTO_FONTS_HINTED="Cousine-Regular.ttf NotoKufiArabic-Regular.ttf NotoNaskhArabic-Regular.ttf NotoSans-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerif-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
+ NOTO_FONTS_HINTED="NotoNaskhArabic-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
for fontfile in $NOTO_FONTS_HINTED; do
cp "noto-fonts/hinted/$fontfile" $TORBROWSER_NAME.app/Contents/Resources/fonts/
done
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index 02a3816..c674e1b 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -115,7 +115,7 @@ script: |
#
# Install fonts.
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/fonts
- NOTO_FONTS_HINTED="Cousine-Regular.ttf NotoKufiArabic-Regular.ttf NotoNaskhArabic-Regular.ttf NotoSans-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerif-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
+ NOTO_FONTS_HINTED="NotoNaskhArabic-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
for fontfile in $NOTO_FONTS_HINTED; do
cp "noto-fonts/hinted/$fontfile" tbb-windows-installer/"Tor Browser"/Browser/fonts/
done
1
0

[tor-browser/tor-browser-38.2.0esr-5.5-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by mikeperry@torproject.org 08 Aug '15
by mikeperry@torproject.org 08 Aug '15
08 Aug '15
commit d9ac9f768a4ff03f2f95db452e3c33f78ae834b9
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Aug 5 17:42:10 2015 -0700
fixup! TB4: Tor Browser's Firefox preference overrides.
Update font whitelists for #16672.
---
browser/app/profile/000-tor-browser.js | 247 +++++++++++++++++---------------
1 file changed, 129 insertions(+), 118 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 6bc98d0..f21a564 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -240,119 +240,130 @@ pref("security.cert_pinning.enforcement_level", 2);
#endif
// If we are bundling fonts, only allow bundled fonts to be used.
+
#ifdef MOZ_BUNDLED_FONTS
+
+#ifdef XP_MACOSX
+pref("font.system.whitelist", "Courier, Georgia, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+#endif
+
+#ifdef XP_WIN
+pref("font.system.whitelist", "Courier New, Georgia, Arial, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+#endif
+
+#ifdef XP_LINUX
+pref("font.system.whitelist", "Arimo, Arimo Bold, Arimo Italic, Arimo Bold Italic, Cousine, Tinos, Tinos Bold, Tinos Italic, Tinos Bold Italic, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+#endif
+
pref("font.default.lo", "Noto Sans Lao");
pref("font.default.my", "Noto Sans Myanmar");
pref("font.default.x-western", "sans-serif");
-pref("font.internaluseonly.changed", true);
-pref("font.name-list.cursive.ar", "Noto Naskh Arabic");
-pref("font.name-list.cursive.el", "Noto Serif");
-pref("font.name-list.cursive.he", "Noto Sans Hebrew");
-pref("font.name-list.cursive.x-cyrillic", "Noto Serif");
-pref("font.name-list.cursive.x-unicode", "Noto Serif, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Lao\, Noto Sans Myanmar, Noto Sans Mongolian, Noto Sans Thaana, Noto Sans Yi, Noto Serif Lao");
-pref("font.name-list.cursive.x-western", "Noto Serif");
-pref("font.name-list.fantasy.ar", "Noto Kufi Arabic");
-pref("font.name-list.fantasy.el", "Noto Serif");
-pref("font.name-list.fantasy.he", "Noto Sans Hebrew");
-pref("font.name-list.fantasy.x-cyrillic", "Noto Serif");
-pref("font.name-list.fantasy.x-unicode", "Noto Serif, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Lao\, Noto Sans Myanmar, Noto Sans Mongolian, Noto Sans Thaana, Noto Sans Yi, Noto Serif Lao");
-pref("font.name-list.fantasy.x-western", "Noto Serif");
-pref("font.name-list.monospace.ar", "Noto Kufi Arabic");
-pref("font.name-list.monospace.el", "Cousine");
-pref("font.name-list.monospace.he", "Noto Sans Hebrew");
-pref("font.name-list.monospace.ja", "Noto Sans CJK SC Regular");
-pref("font.name-list.monospace.ko", "Noto Sans CJK SC Regular");
-pref("font.name-list.monospace.th", "Noto Sans Thai");
-pref("font.name-list.monospace.x-armn", "Noto Sans Armenian");
-pref("font.name-list.monospace.x-beng", "Noto Sans Bengali");
-pref("font.name-list.monospace.x-cyrillic", "Cousine");
-pref("font.name-list.monospace.x-devanagari", "Noto Sans Devanagari");
-pref("font.name-list.monospace.x-ethi", "Noto Sans Ethiopic");
-pref("font.name-list.monospace.x-geor", "Noto Sans Georgian");
-pref("font.name-list.monospace.x-gujr", "Noto Sans Gujarati");
-pref("font.name-list.monospace.x-guru", "Noto Sans Gurmukhi");
-pref("font.name-list.monospace.x-khmr", "Noto Sans Khmer");
-pref("font.name-list.monospace.x-knda", "Noto Sans Kannada");
-pref("font.name-list.monospace.x-mlym", "Noto Sans Malayalam");
-pref("font.name-list.monospace.x-orya", "Noto Sans Oriya");
-pref("font.name-list.monospace.x-sinh", "Noto Sans Sinhala");
-pref("font.name-list.monospace.x-tamil", "Noto Sans Tamil");
-pref("font.name-list.monospace.x-telu", "Noto Sans Telugu");
-pref("font.name-list.monospace.x-tibt", "Noto Sans Tibetan");
-pref("font.name-list.monospace.x-unicode", "Cousine, Noto Sans Lao, Noto Sans Myanmar, Noto Sans Mongolian, Noto Sans Thaana, Noto Serif Lao");
-pref("font.name-list.monospace.x-western", "Cousine");
-pref("font.name-list.monospace.zh-CN", "Noto Sans CJK SC Regular");
-pref("font.name-list.monospace.zh-HK", "Noto Sans CJK SC Regular");
-pref("font.name-list.monospace.zh-TW", "Noto Sans CJK SC Regular");
-pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic");
-pref("font.name-list.sans-serif.el", "Noto Sans");
-pref("font.name-list.sans-serif.he", "Noto Sans Hebrew");
-pref("font.name-list.sans-serif.ja", "Noto Sans CJK SC Regular");
-pref("font.name-list.sans-serif.ko", "Noto Sans CJK SC Regular");
-pref("font.name-list.sans-serif.th", "Noto Sans Thai");
-pref("font.name-list.sans-serif.x-armn", "Noto Sans Armenian");
-pref("font.name-list.sans-serif.x-beng", "Noto Sans Bengali");
-pref("font.name-list.sans-serif.x-cyrillic", "Noto Sans");
-pref("font.name-list.sans-serif.x-devanagari", "Noto Sans Devanagari");
-pref("font.name-list.sans-serif.x-ethi", "Noto Sans Ethiopic");
-pref("font.name-list.sans-serif.x-geor", "Noto Sans Georgian");
-pref("font.name-list.sans-serif.x-gujr", "Noto Sans Gujarati");
-pref("font.name-list.sans-serif.x-guru", "Noto Sans Gurmukhi");
-pref("font.name-list.sans-serif.x-khmr", "Noto Sans Khmer");
-pref("font.name-list.sans-serif.x-knda", "Noto Sans Kannada");
-pref("font.name-list.sans-serif.x-mlym", "Noto Sans Malayalam");
-pref("font.name-list.sans-serif.x-orya", "Noto Sans Oriya");
-pref("font.name-list.sans-serif.x-sinh", "Noto Sans Sinhala");
-pref("font.name-list.sans-serif.x-tamil", "Noto Sans Tamil");
-pref("font.name-list.sans-serif.x-telu", "Noto Sans Telugu");
-pref("font.name-list.sans-serif.x-tibt", "Noto Sans Tibetan");
-pref("font.name-list.sans-serif.x-unicode", "Noto Sans, Noto Sans Lao, Noto Sans Myanmar, Noto Sans Mongolian, Noto Sans Thaana, Noto Serif Lao");
-pref("font.name-list.sans-serif.x-western", "Noto Sans");
-pref("font.name-list.sans-serif.zh-CN", "Noto Sans CJK SC Regular");
-pref("font.name-list.sans-serif.zh-HK", "Noto Sans CJK SC Regular");
-pref("font.name-list.sans-serif.zh-TW", "Noto Sans CJK SC Regular");
-pref("font.name-list.serif.ar", "Noto Naskh Arabic");
-pref("font.name-list.serif.el", "Noto Serif");
-pref("font.name-list.serif.he", "Noto Sans Hebrew");
-pref("font.name-list.serif.ja", "Noto Sans CJK SC Regular");
-pref("font.name-list.serif.ko", "Noto Sans CJK SC Regular");
-pref("font.name-list.serif.th", "Noto Sans Thai");
-pref("font.name-list.serif.th", "Noto Serif Thai");
-pref("font.name-list.serif.x-armn", "Noto Serif Armenian");
-pref("font.name-list.serif.x-beng", "Noto Sans Bengali");
-pref("font.name-list.serif.x-cyrillic", "Noto Serif");
-pref("font.name-list.serif.x-devanagari", "Noto Sans Devanagari");
-pref("font.name-list.serif.x-ethi", "Noto Sans Ethiopic");
-pref("font.name-list.serif.x-geor", "Noto Sans Georgian");
-pref("font.name-list.serif.x-gujr", "Noto Sans Gujarati");
-pref("font.name-list.serif.x-guru", "Noto Sans Gurmukhi");
-pref("font.name-list.serif.x-khmr", "Noto Serif Khmer");
-pref("font.name-list.serif.x-knda", "Noto Sans Kannada");
-pref("font.name-list.serif.x-mlym", "Noto Sans Malayalam");
-pref("font.name-list.serif.x-orya", "Noto Sans Oriya");
-pref("font.name-list.serif.x-sinh", "Noto Sans Sinhala");
-pref("font.name-list.serif.x-tamil", "Noto Sans Tamil");
-pref("font.name-list.serif.x-telu", "Noto Sans Telugu");
-pref("font.name-list.serif.x-tibt", "Noto Sans Tibetan");
-pref("font.name-list.serif.x-unicode", "Noto Serif, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Lao, Noto Sans Myanmar, Noto Sans Mongolian, Noto Sans Thaana, Noto Sans Yi, Noto Serif Lao");
-pref("font.name-list.serif.x-western", "Noto Serif");
-pref("font.name-list.serif.zh-CN", "Noto Sans CJK SC Regular");
-pref("font.name-list.serif.zh-HK", "Noto Sans CJK SC Regular");
-pref("font.name-list.serif.zh-TW", "Noto Sans CJK SC Regular");
+pref("font.name-list.cursive.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.he", "Noto Sans Hebrew, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.el", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.he", "Noto Sans Hebrew, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ar", "Noto Naskh Arabic, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.el", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.he", "Noto Sans Hebrew, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ja", "Noto Sans CJK SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ko", "Noto Sans CJK SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.th", "Noto Sans Thai, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-armn", "Noto Sans Armenian, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-beng", "Noto Sans Bengali, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-cyrillic", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-devanagari", "Noto Sans Devanagari, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-ethi", "Noto Sans Ethiopic, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-geor", "Noto Sans Georgian, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-gujr", "Noto Sans Gujarati, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-guru", "Noto Sans Gurmukhi, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-khmr", "Noto Sans Khmer, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-knda", "Noto Sans Kannada, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-mlym", "Noto Sans Malayalam, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-orya", "Noto Sans Oriya, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-sinh", "Noto Sans Sinhala, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-tamil", "Noto Sans Tamil, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-telu", "Noto Sans Telugu, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-tibt", "Noto Sans Tibetan, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-unicode", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-western", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-CN", "Noto Sans CJK SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-HK", "Noto Sans CJK SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-TW", "Noto Sans CJK SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.el", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.he", "Noto Sans Hebrew, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ja", "Noto Sans CJK SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ko", "Noto Sans CJK SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.th", "Noto Sans Thai, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-armn", "Noto Sans Armenian, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-beng", "Noto Sans Bengali, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-cyrillic", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-devanagari", "Noto Sans Devanagari, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-ethi", "Noto Sans Ethiopic, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-geor", "Noto Sans Georgian, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-gujr", "Noto Sans Gujarati, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-guru", "Noto Sans Gurmukhi, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-khmr", "Noto Sans Khmer, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-knda", "Noto Sans Kannada, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-mlym", "Noto Sans Malayalam, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-orya", "Noto Sans Oriya, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-sinh", "Noto Sans Sinhala, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-tamil", "Noto Sans Tamil, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-telu", "Noto Sans Telugu, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-tibt", "Noto Sans Tibetan, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-unicode", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-western", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-CN", "Noto Sans CJK SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-HK", "Noto Sans CJK SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-TW", "Noto Sans CJK SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.el", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.he", "Tinos, Georgia, Noto Sans Hebrew, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ja", "Noto Sans CJK SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ko", "Noto Sans CJK SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.th", "Noto Serif Thai, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-armn", "Noto Serif Armenian, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-beng", "Noto Sans Bengali, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-devanagari", "Noto Sans Devanagari, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-ethi", "Noto Sans Ethiopic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-geor", "Noto Sans Georgian, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-gujr", "Noto Sans Gujarati, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-guru", "Noto Sans Gurmukhi, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-khmr", "Noto Serif Khmer, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-knda", "Noto Sans Kannada, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-mlym", "Noto Sans Malayalam, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-orya", "Noto Sans Oriya, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-sinh", "Noto Sans Sinhala, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-tamil", "Noto Sans Tamil, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-telu", "Noto Sans Telugu, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-tibt", "Noto Sans Tibetan, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-CN", "Noto Sans CJK SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-HK", "Noto Sans CJK SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-TW", "Noto Sans CJK SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
pref("font.name.cursive.ar", "Noto Naskh Arabic");
-pref("font.name.cursive.el", "Noto Serif");
+pref("font.name.cursive.el", "Tinos, Georgia");
pref("font.name.cursive.he", "Noto Sans Hebrew");
-pref("font.name.cursive.x-cyrillic", "Noto Serif");
-pref("font.name.cursive.x-unicode", "Noto Serif");
-pref("font.name.cursive.x-western", "Noto Serif");
-pref("font.name.fantasy.ar", "Noto Kufi Arabic");
-pref("font.name.fantasy.el", "Noto Serif");
+pref("font.name.cursive.x-cyrillic", "Tinos, Georgia");
+pref("font.name.cursive.x-unicode", "Tinos, Georgia");
+pref("font.name.cursive.x-western", "Tinos, Georgia");
+pref("font.name.fantasy.ar", "Noto Naskh Arabic");
+pref("font.name.fantasy.el", "Tinos, Georgia");
pref("font.name.fantasy.he", "Noto Sans Hebrew");
-pref("font.name.fantasy.x-cyrillic", "Noto Serif");
-pref("font.name.fantasy.x-unicode", "Noto Serif");
-pref("font.name.fantasy.x-western", "Noto Serif");
-pref("font.name.monospace.ar", "Noto Kufi Arabic");
-pref("font.name.monospace.el", "Cousine");
+pref("font.name.fantasy.x-cyrillic", "Tinos, Georgia");
+pref("font.name.fantasy.x-unicode", "Tinos, Georgia");
+pref("font.name.fantasy.x-western", "Tinos, Georgia");
+pref("font.name.monospace.ar", "Noto Naskh Arabic");
+pref("font.name.monospace.el", "Tinos, Georgia");
pref("font.name.monospace.he", "Noto Sans Hebrew");
pref("font.name.monospace.ja", "Noto Sans CJK SC Regular");
pref("font.name.monospace.ko", "Noto Sans CJK SC Regular");
@@ -360,7 +371,7 @@ pref("font.name.monospace.my", "Noto Sans Myanmar");
pref("font.name.monospace.th", "Noto Sans Thai");
pref("font.name.monospace.x-armn", "Noto Sans Armenian");
pref("font.name.monospace.x-beng", "Noto Sans Bengali");
-pref("font.name.monospace.x-cyrillic", "Cousine");
+pref("font.name.monospace.x-cyrillic", "Cousine, Courier, Courier New");
pref("font.name.monospace.x-devanagari", "Noto Sans Devanagari");
pref("font.name.monospace.x-ethi", "Noto Sans Ethiopic");
pref("font.name.monospace.x-geor", "Noto Sans Georgian");
@@ -374,20 +385,20 @@ pref("font.name.monospace.x-sinh", "Noto Sans Sinhala");
pref("font.name.monospace.x-tamil", "Noto Sans Tamil");
pref("font.name.monospace.x-telu", "Noto Sans Telugu");
pref("font.name.monospace.x-tibt", "Noto Sans Tibetan");
-pref("font.name.monospace.x-unicode", "Cousine");
-pref("font.name.monospace.x-western", "Cousine");
+pref("font.name.monospace.x-unicode", "Cousine, Courier, Courier New");
+pref("font.name.monospace.x-western", "Cousine, Courier, Courier New");
pref("font.name.monospace.zh-CN", "Noto Sans CJK SC Regular");
pref("font.name.monospace.zh-HK", "Noto Sans CJK SC Regular");
pref("font.name.monospace.zh-TW", "Noto Sans CJK SC Regular");
pref("font.name.sans-serif.ar", "Noto Naskh Arabic");
-pref("font.name.sans-serif.el", "Noto Sans");
+pref("font.name.sans-serif.el", "Arimo, Arial, Verdana");
pref("font.name.sans-serif.he", "Noto Sans Hebrew");
pref("font.name.sans-serif.ja", "Noto Sans CJK SC Regular");
pref("font.name.sans-serif.ko", "Noto Sans CJK SC Regular");
pref("font.name.sans-serif.th", "Noto Sans Thai");
pref("font.name.sans-serif.x-armn", "Noto Sans Armenian");
pref("font.name.sans-serif.x-beng", "Noto Sans Bengali");
-pref("font.name.sans-serif.x-cyrillic", "Noto Sans");
+pref("font.name.sans-serif.x-cyrillic", "Arimo, Arial, Verdana");
pref("font.name.sans-serif.x-devanagari", "Noto Sans Devanagari");
pref("font.name.sans-serif.x-ethi", "Noto Sans Ethiopic");
pref("font.name.sans-serif.x-geor", "Noto Sans Georgian");
@@ -401,14 +412,14 @@ pref("font.name.sans-serif.x-sinh", "Noto Sans Sinhala");
pref("font.name.sans-serif.x-tamil", "Noto Sans Tamil");
pref("font.name.sans-serif.x-telu", "Noto Sans Telugu");
pref("font.name.sans-serif.x-tibt", "Noto Sans Tibetan");
-pref("font.name.sans-serif.x-unicode", "Noto Sans");
-pref("font.name.sans-serif.x-western", "Noto Sans");
+pref("font.name.sans-serif.x-unicode", "Arimo, Arial, Verdana");
+pref("font.name.sans-serif.x-western", "Arimo, Arial, Verdana");
pref("font.name.sans-serif.zh-CN", "Noto Sans CJK SC Regular");
pref("font.name.sans-serif.zh-HK", "Noto Sans CJK SC Regular");
pref("font.name.sans-serif.zh-TW", "Noto Sans CJK SC Regular");
pref("font.name.sans.my", "Noto Sans Myanmar");
pref("font.name.serif.ar", "Noto Naskh Arabic");
-pref("font.name.serif.el", "Noto Serif");
+pref("font.name.serif.el", "Tinos, Georgia");
pref("font.name.serif.he", "Noto Sans Hebrew");
pref("font.name.serif.ja", "Noto Sans CJK SC Regular");
pref("font.name.serif.ko", "Noto Sans CJK SC Regular");
@@ -416,7 +427,7 @@ pref("font.name.serif.my", "Noto Sans Myanmar");
pref("font.name.serif.th", "Noto Serif Thai");
pref("font.name.serif.x-armn", "Noto Serif Armenian");
pref("font.name.serif.x-beng", "Noto Sans Bengali");
-pref("font.name.serif.x-cyrillic", "Noto Serif");
+pref("font.name.serif.x-cyrillic", "Tinos, Georgia");
pref("font.name.serif.x-devanagari", "Noto Sans Devanagari");
pref("font.name.serif.x-ethi", "Noto Sans Ethiopic");
pref("font.name.serif.x-geor", "Noto Sans Georgian");
@@ -430,10 +441,10 @@ pref("font.name.serif.x-sinh", "Noto Sans Sinhala");
pref("font.name.serif.x-tamil", "Noto Sans Tamil");
pref("font.name.serif.x-telu", "Noto Sans Telugu");
pref("font.name.serif.x-tibt", "Noto Sans Tibetan");
-pref("font.name.serif.x-unicode", "Noto Serif");
-pref("font.name.serif.x-western", "Noto Serif");
+pref("font.name.serif.x-unicode", "Tinos, Georgia");
+pref("font.name.serif.x-western", "Tinos, Georgia");
pref("font.name.serif.zh-CN", "Noto Sans CJK SC Regular");
pref("font.name.serif.zh-HK", "Noto Sans CJK SC Regular");
pref("font.name.serif.zh-TW", "Noto Sans CJK SC Regular");
-pref("font.system.whitelist", "Cousine, Noto Kufi Arabic, Noto Naskh Arabic, Noto Sans, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans CJK SC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+
#endif
1
0

[translation/liveusb-creator] Update translations for liveusb-creator
by translation@torproject.org 08 Aug '15
by translation@torproject.org 08 Aug '15
08 Aug '15
commit b71c252fa380a889f7746972e05269ececece1a5
Author: Translation commit bot <translation(a)torproject.org>
Date: Sat Aug 8 20:15:20 2015 +0000
Update translations for liveusb-creator
---
fa/fa.po | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/fa/fa.po b/fa/fa.po
index b66f800..d55c13c 100644
--- a/fa/fa.po
+++ b/fa/fa.po
@@ -19,8 +19,8 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-04 10:45+0200\n"
-"PO-Revision-Date: 2015-08-05 08:28+0000\n"
-"Last-Translator: carolyn <carolyn(a)anhalt.org>\n"
+"PO-Revision-Date: 2015-08-08 20:13+0000\n"
+"Last-Translator: Gilberto\n"
"Language-Team: Persian (http://www.transifex.com/otf/torproject/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -30,11 +30,11 @@ msgstr ""
#: ../liveusb/gui.py:451
msgid "\"Clone & Install\""
-msgstr ""
+msgstr "\"تکثیر و نصب\""
#: ../liveusb/gui.py:453
msgid "\"Install from ISO\""
-msgstr ""
+msgstr "\"نصب از ISO\""
#: ../liveusb/dialog.py:150 ../liveusb/launcher_ui.py:149
#, python-format
1
0

[onionoo/master] Add "effective_family" field to details documents.
by karsten@torproject.org 08 Aug '15
by karsten@torproject.org 08 Aug '15
08 Aug '15
commit d3590d9bd48c0d8980360fb476bac9cc7a9f15bd
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Fri Jul 3 10:20:34 2015 +0200
Add "effective_family" field to details documents.
Implements #16276.
---
build.xml | 2 +-
.../torproject/onionoo/docs/DetailsDocument.java | 8 ++
.../org/torproject/onionoo/docs/DetailsStatus.java | 8 ++
.../org/torproject/onionoo/docs/DocumentStore.java | 2 +-
.../org/torproject/onionoo/docs/NodeStatus.java | 34 ++++++-
.../torproject/onionoo/docs/SummaryDocument.java | 17 +++-
.../org/torproject/onionoo/server/NodeIndexer.java | 30 ++++--
.../torproject/onionoo/server/ResponseBuilder.java | 4 +-
.../onionoo/updater/NodeDetailsStatusUpdater.java | 102 ++++++++++++++++----
.../onionoo/writer/DetailsDocumentWriter.java | 8 ++
.../onionoo/writer/SummaryDocumentWriter.java | 3 +-
.../onionoo/server/ResourceServletTest.java | 15 ++-
web/protocol.html | 15 +++
13 files changed, 209 insertions(+), 39 deletions(-)
diff --git a/build.xml b/build.xml
index b10987b..75dfe1c 100644
--- a/build.xml
+++ b/build.xml
@@ -1,6 +1,6 @@
<project default="dist" name="onionoo" basedir=".">
- <property name="onionoo.protocol.version" value="2.3"/>
+ <property name="onionoo.protocol.version" value="2.4"/>
<property name="release.version"
value="${onionoo.protocol.version}.0"/>
<property name="javasources" value="src/main/java"/>
diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
index d4efdc0..2b65e50 100644
--- a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
+++ b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java
@@ -289,6 +289,14 @@ public class DetailsDocument extends Document {
return this.family;
}
+ private SortedSet<String> effective_family;
+ public void setEffectiveFamily(SortedSet<String> effectiveFamily) {
+ this.effective_family = effectiveFamily;
+ }
+ public SortedSet<String> getEffectiveFamily() {
+ return this.effective_family;
+ }
+
private Float consensus_weight_fraction;
public void setConsensusWeightFraction(Float consensusWeightFraction) {
if (consensusWeightFraction == null ||
diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
index fe46416..09f0824 100644
--- a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
+++ b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java
@@ -110,6 +110,14 @@ public class DetailsStatus extends Document {
return this.family;
}
+ private SortedSet<String> effective_family;
+ public void setEffectiveFamily(SortedSet<String> effectiveFamily) {
+ this.effective_family = effectiveFamily;
+ }
+ public SortedSet<String> getEffectiveFamily() {
+ return this.effective_family;
+ }
+
private Map<String, List<String>> exit_policy_v6_summary;
public void setExitPolicyV6Summary(
Map<String, List<String>> exitPolicyV6Summary) {
diff --git a/src/main/java/org/torproject/onionoo/docs/DocumentStore.java b/src/main/java/org/torproject/onionoo/docs/DocumentStore.java
index 3be6fdb..8e2162c 100644
--- a/src/main/java/org/torproject/onionoo/docs/DocumentStore.java
+++ b/src/main/java/org/torproject/onionoo/docs/DocumentStore.java
@@ -422,7 +422,7 @@ public class DocumentStore {
SummaryDocument summaryDocument = new SummaryDocument(isRelay,
nickname, fingerprint, addresses, lastSeenMillis, running,
relayFlags, consensusWeight, countryCode, firstSeenMillis,
- aSNumber, contact, family);
+ aSNumber, contact, family, family);
return summaryDocument;
}
diff --git a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
index 0985491..51fc678 100644
--- a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
+++ b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
@@ -301,6 +301,16 @@ public class NodeStatus extends Document {
return this.lastRdnsLookup;
}
+ /* Computed effective family */
+
+ private String[] effectiveFamily;
+ public void setEffectiveFamily(SortedSet<String> effectiveFamily) {
+ this.effectiveFamily = collectionToStringArray(effectiveFamily);
+ }
+ public SortedSet<String> getEffectiveFamily() {
+ return stringArrayToSortedSet(this.effectiveFamily);
+ }
+
/* Constructor and (de-)serialization methods: */
public NodeStatus(String fingerprint) {
@@ -402,8 +412,17 @@ public class NodeStatus extends Document {
nodeStatus.setRecommendedVersion(parts[21].equals("true"));
}
if (!parts[22].equals("null")) {
- nodeStatus.setFamilyFingerprints(new TreeSet<String>(
- Arrays.asList(parts[22].split(";"))));
+ SortedSet<String> familyFingerprints = new TreeSet<String>();
+ for (String familyMember : parts[22].split("[;:]")) {
+ if (familyMember.length() > 0) {
+ familyFingerprints.add(familyMember);
+ }
+ }
+ nodeStatus.setFamilyFingerprints(familyFingerprints);
+ if (parts[22].contains(":")) {
+ nodeStatus.setEffectiveFamily(new TreeSet<String>(
+ Arrays.asList(parts[22].split(":", 2)[1].split(";"))));
+ }
}
return nodeStatus;
} catch (NumberFormatException e) {
@@ -464,7 +483,16 @@ public class NodeStatus extends Document {
sb.append("\t" + (this.contact != null ? this.contact : ""));
sb.append("\t" + (this.recommendedVersion == null ? "null" :
this.recommendedVersion ? "true" : "false"));
- sb.append("\t" + StringUtils.join(this.familyFingerprints, ";"));
+ if (this.effectiveFamily != null && this.effectiveFamily.length > 0) {
+ SortedSet<String> mutual = this.getEffectiveFamily();
+ SortedSet<String> notMutual = new TreeSet<String>(
+ this.getFamilyFingerprints());
+ notMutual.removeAll(mutual);
+ sb.append("\t" + StringUtils.join(notMutual, ";") + ":"
+ + StringUtils.join(mutual, ";"));
+ } else {
+ sb.append("\t" + StringUtils.join(this.familyFingerprints, ";"));
+ }
return sb.toString();
}
}
diff --git a/src/main/java/org/torproject/onionoo/docs/SummaryDocument.java b/src/main/java/org/torproject/onionoo/docs/SummaryDocument.java
index 8e325f3..ae7202b 100644
--- a/src/main/java/org/torproject/onionoo/docs/SummaryDocument.java
+++ b/src/main/java/org/torproject/onionoo/docs/SummaryDocument.java
@@ -185,6 +185,9 @@ public class SummaryDocument extends Document {
return this.c;
}
+ /* This attribute can go away once all Onionoo services had their hourly
+ * updater write effective families to summary documents at least once.
+ * Remove this code after September 8, 2015. */
private String[] ff;
public void setFamilyFingerprints(
SortedSet<String> familyFingerprints) {
@@ -194,11 +197,22 @@ public class SummaryDocument extends Document {
return this.stringArrayToSortedSet(this.ff);
}
+ private String[] ef;
+ public void setEffectiveFamily(SortedSet<String> effectiveFamily) {
+ this.ef = this.collectionToStringArray(effectiveFamily);
+ }
+ public SortedSet<String> getEffectiveFamily() {
+ return this.stringArrayToSortedSet(this.ef);
+ }
+
+ /* The familyFingerprints parameter can go away after September 8, 2015.
+ * See above. */
public SummaryDocument(boolean isRelay, String nickname,
String fingerprint, List<String> addresses, long lastSeenMillis,
boolean running, SortedSet<String> relayFlags, long consensusWeight,
String countryCode, long firstSeenMillis, String aSNumber,
- String contact, SortedSet<String> familyFingerprints) {
+ String contact, SortedSet<String> familyFingerprints,
+ SortedSet<String> effectiveFamily) {
this.setRelay(isRelay);
this.setNickname(nickname);
this.setFingerprint(fingerprint);
@@ -212,6 +226,7 @@ public class SummaryDocument extends Document {
this.setASNumber(aSNumber);
this.setContact(contact);
this.setFamilyFingerprints(familyFingerprints);
+ this.setEffectiveFamily(effectiveFamily);
}
}
diff --git a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
index 5788d4e..347996b 100644
--- a/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
+++ b/src/main/java/org/torproject/onionoo/server/NodeIndexer.java
@@ -1,7 +1,6 @@
package org.torproject.onionoo.server;
import java.io.File;
-import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -19,7 +18,6 @@ import javax.servlet.ServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.torproject.onionoo.docs.DocumentStore;
import org.torproject.onionoo.docs.DocumentStoreFactory;
import org.torproject.onionoo.docs.SummaryDocument;
@@ -160,6 +158,11 @@ public class NodeIndexer implements ServletContextListener, Runnable {
}
Time time = TimeFactory.getTime();
List<String> orderRelaysByConsensusWeight = new ArrayList<String>();
+ /* This variable can go away once all Onionoo services had their
+ * hourly updater write effective families to summary documents at
+ * least once. Remove this code after September 8, 2015. */
+ SortedMap<String, Set<String>> computedEffectiveFamilies =
+ new TreeMap<String, Set<String>>();
for (SummaryDocument entry : currentRelays) {
String fingerprint = entry.getFingerprint().toUpperCase();
String hashedFingerprint = entry.getHashedFingerprint().
@@ -196,8 +199,16 @@ public class NodeIndexer implements ServletContextListener, Runnable {
newRelaysByFlag.get(flagLowerCase).add(fingerprint);
newRelaysByFlag.get(flagLowerCase).add(hashedFingerprint);
}
- if (entry.getFamilyFingerprints() != null) {
- newRelaysByFamily.put(fingerprint, entry.getFamilyFingerprints());
+ /* This condition can go away once all Onionoo services had their
+ * hourly updater write effective families to summary documents at
+ * least once. Remove this code after September 8, 2015. */
+ if (entry.getFamilyFingerprints() != null &&
+ !entry.getFamilyFingerprints().isEmpty()) {
+ computedEffectiveFamilies.put(fingerprint,
+ entry.getFamilyFingerprints());
+ }
+ if (entry.getEffectiveFamily() != null) {
+ newRelaysByFamily.put(fingerprint, entry.getEffectiveFamily());
}
int daysSinceFirstSeen = (int) ((time.currentTimeMillis()
- entry.getFirstSeenMillis()) / ONE_DAY);
@@ -229,18 +240,21 @@ public class NodeIndexer implements ServletContextListener, Runnable {
for (String relay : orderRelaysByConsensusWeight) {
newRelaysByConsensusWeight.add(relay.split(" ")[1]);
}
+ /* This loop can go away once all Onionoo services had their hourly
+ * updater write effective families to summary documents at least
+ * once. Remove this code after September 8, 2015. */
for (Map.Entry<String, Set<String>> e :
- newRelaysByFamily.entrySet()) {
+ computedEffectiveFamilies.entrySet()) {
String fingerprint = e.getKey();
Set<String> inMutualFamilyRelation = new HashSet<String>();
for (String otherFingerprint : e.getValue()) {
- if (newRelaysByFamily.containsKey(otherFingerprint) &&
- newRelaysByFamily.get(otherFingerprint).contains(
+ if (computedEffectiveFamilies.containsKey(otherFingerprint) &&
+ computedEffectiveFamilies.get(otherFingerprint).contains(
fingerprint)) {
inMutualFamilyRelation.add(otherFingerprint);
}
}
- e.getValue().retainAll(inMutualFamilyRelation);
+ newRelaysByFamily.put(fingerprint, inMutualFamilyRelation);
}
for (SummaryDocument entry : currentBridges) {
String hashedFingerprint = entry.getFingerprint().toUpperCase();
diff --git a/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java b/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java
index af0f67e..c7bfd65 100644
--- a/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java
+++ b/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java
@@ -70,7 +70,7 @@ public class ResponseBuilder {
return this.charsWritten;
}
- private static final String PROTOCOL_VERSION = "2.3";
+ private static final String PROTOCOL_VERSION = "2.4";
private static final String NEXT_MAJOR_VERSION_SCHEDULED = null;
@@ -267,6 +267,8 @@ public class ResponseBuilder {
dd.setHibernating(detailsDocument.getHibernating());
} else if (field.equals("transports")) {
dd.setTransports(detailsDocument.getTransports());
+ } else if (field.equals("effective_family")) {
+ dd.setEffectiveFamily(detailsDocument.getEffectiveFamily());
}
}
/* Don't escape HTML characters, like < and >, contained in
diff --git a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
index be2bd9a..4fb0143 100644
--- a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
+++ b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
@@ -56,14 +56,14 @@ import org.torproject.onionoo.util.TimeFactory;
* are not loaded from disk before the parse step in order to save
* memory for parsed descriptors.
* 3. Perform reverse DNS lookups, Look up relay IP addresses in a
- * GeoIP database, and calculate path selection probabilities.
- * Update node statuses accordingly.
+ * GeoIP database, calculate path selection probabilities, and
+ * compute effective families, and update node statuses accordingly.
* 4. Retrieve details statuses corresponding to nodes that have been
* changed since the start of the update process, possibly update the
* node statuses with contents from newly parsed descriptors, update
- * details statuses with results from lookup operations and new path
- * selection probabilities, and store details statuses and node
- * statuses back to disk.
+ * details statuses with results from lookup operations, new path
+ * selection probabilities, and effective families, and store details
+ * statuses and node statuses back to disk.
*/
public class NodeDetailsStatusUpdater implements DescriptorListener,
StatusUpdater {
@@ -140,6 +140,9 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
}
}
+ private Map<String, SortedSet<String>> familyFingerprints =
+ new HashMap<String, SortedSet<String>>();
+
private void processRelayServerDescriptor(
ServerDescriptor descriptor) {
String fingerprint = descriptor.getFingerprint();
@@ -170,6 +173,16 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
detailsStatus.setContact(descriptor.getContact());
detailsStatus.setPlatform(descriptor.getPlatform());
detailsStatus.setFamily(descriptor.getFamilyEntries());
+ if (descriptor.getFamilyEntries() != null) {
+ SortedSet<String> noPrefixUpperCase = new TreeSet<String>();
+ for (String familyMember : descriptor.getFamilyEntries()) {
+ if (familyMember.startsWith("$") && familyMember.length() >= 41) {
+ noPrefixUpperCase.add(
+ familyMember.substring(1, 41).toUpperCase());
+ }
+ }
+ this.familyFingerprints.put(fingerprint, noPrefixUpperCase);
+ }
if (descriptor.getIpv6DefaultPolicy() != null &&
(descriptor.getIpv6DefaultPolicy().equals("accept") ||
descriptor.getIpv6DefaultPolicy().equals("reject")) &&
@@ -354,6 +367,8 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
log.info("Looked up cities and ASes");
this.calculatePathSelectionProbabilities();
log.info("Calculated path selection probabilities");
+ this.computeEffectiveFamilies();
+ log.info("Computed effective families");
this.finishReverseDomainNameLookups();
log.info("Finished reverse domain name lookups");
this.updateNodeDetailsStatuses();
@@ -449,6 +464,10 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
}
updatedNodeStatus.setLastRdnsLookup(
nodeStatus.getLastRdnsLookup());
+ updatedNodeStatus.setFamilyFingerprints(
+ nodeStatus.getFamilyFingerprints());
+ updatedNodeStatus.setEffectiveFamily(
+ nodeStatus.getEffectiveFamily());
} else {
updatedNodeStatus = nodeStatus;
this.knownNodes.put(fingerprint, nodeStatus);
@@ -471,6 +490,19 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
}
}
}
+ /* Update family fingerprints in known nodes with any fingerprints we
+ * learned when parsing server descriptors in this run. These are
+ * guaranteed to come from more recent server descriptors, so it's
+ * safe to override whatever is in node statuses. */
+ for (Map.Entry<String, NodeStatus> e : this.knownNodes.entrySet()) {
+ String fingerprint = e.getKey();
+ if (this.familyFingerprints.containsKey(fingerprint)) {
+ NodeStatus nodeStatus = e.getValue();
+ nodeStatus.setFamilyFingerprints(
+ this.familyFingerprints.get(fingerprint));
+ }
+ }
+ this.familyFingerprints.clear();
}
/* Step 3: perform lookups and calculate path selection
@@ -617,6 +649,52 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
}
}
+ private void computeEffectiveFamilies() {
+ SortedMap<String, SortedSet<String>> declaredFamilies =
+ new TreeMap<String, SortedSet<String>>();
+ for (String fingerprint : this.currentRelays) {
+ NodeStatus nodeStatus = this.knownNodes.get(fingerprint);
+ if (nodeStatus != null &&
+ nodeStatus.getFamilyFingerprints() != null &&
+ !nodeStatus.getFamilyFingerprints().isEmpty()) {
+ declaredFamilies.put(fingerprint,
+ nodeStatus.getFamilyFingerprints());
+ }
+ }
+ SortedMap<String, SortedSet<String>> effectiveFamilies =
+ new TreeMap<String, SortedSet<String>>();
+ for (Map.Entry<String, SortedSet<String>> e :
+ declaredFamilies.entrySet()) {
+ String fingerprint = e.getKey();
+ SortedSet<String> declaredFamily = e.getValue();
+ SortedSet<String> effectiveFamily = new TreeSet<String>();
+ for (String declaredFamilyMember : declaredFamily) {
+ if (declaredFamilies.containsKey(declaredFamilyMember) &&
+ declaredFamilies.get(declaredFamilyMember).contains(
+ fingerprint)) {
+ effectiveFamily.add(declaredFamilyMember);
+ }
+ }
+ if (!effectiveFamily.isEmpty()) {
+ effectiveFamilies.put(fingerprint, effectiveFamily);
+ }
+ }
+ for (String fingerprint : this.currentRelays) {
+ NodeStatus nodeStatus = this.knownNodes.get(fingerprint);
+ if (nodeStatus == null) {
+ continue;
+ }
+ if (effectiveFamilies.containsKey(fingerprint)) {
+ nodeStatus.setEffectiveFamily(effectiveFamilies.get(fingerprint));
+ this.updatedNodes.add(fingerprint);
+ } else if (nodeStatus.getEffectiveFamily() != null ||
+ !nodeStatus.getEffectiveFamily().isEmpty()) {
+ nodeStatus.setEffectiveFamily(null);
+ this.updatedNodes.add(fingerprint);
+ }
+ }
+ }
+
private long startedRdnsLookups = -1L;
private SortedMap<String, String> rdnsLookupResults =
@@ -681,19 +759,7 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
nodeStatus.getOrAddresses());
nodeStatus.setExitAddresses(exitAddressesWithoutOrAddresses);
- if (detailsStatus.getFamily() != null &&
- !detailsStatus.getFamily().isEmpty()) {
- SortedSet<String> familyFingerprints = new TreeSet<String>();
- for (String familyMember : detailsStatus.getFamily()) {
- if (familyMember.startsWith("$") &&
- familyMember.length() == 41) {
- familyFingerprints.add(familyMember.substring(1));
- }
- }
- if (!familyFingerprints.isEmpty()) {
- nodeStatus.setFamilyFingerprints(familyFingerprints);
- }
- }
+ detailsStatus.setEffectiveFamily(nodeStatus.getEffectiveFamily());
if (this.geoIpLookupResults.containsKey(fingerprint)) {
LookupResult lookupResult = this.geoIpLookupResults.get(
diff --git a/src/main/java/org/torproject/onionoo/writer/DetailsDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/DetailsDocumentWriter.java
index 1a1ddc3..152b4cb 100644
--- a/src/main/java/org/torproject/onionoo/writer/DetailsDocumentWriter.java
+++ b/src/main/java/org/torproject/onionoo/writer/DetailsDocumentWriter.java
@@ -112,6 +112,14 @@ public class DetailsDocumentWriter implements DocumentWriter {
detailsDocument.setContact(detailsStatus.getContact());
detailsDocument.setPlatform(detailsStatus.getPlatform());
detailsDocument.setFamily(detailsStatus.getFamily());
+ if (detailsStatus.getEffectiveFamily() != null &&
+ !detailsStatus.getEffectiveFamily().isEmpty()) {
+ SortedSet<String> effectiveFamily = new TreeSet<String>();
+ for (String familyMember : detailsStatus.getEffectiveFamily()) {
+ effectiveFamily.add("$" + familyMember);
+ }
+ detailsDocument.setEffectiveFamily(effectiveFamily);
+ }
detailsDocument.setExitPolicyV6Summary(
detailsStatus.getExitPolicyV6Summary());
detailsDocument.setHibernating(detailsStatus.getHibernating());
diff --git a/src/main/java/org/torproject/onionoo/writer/SummaryDocumentWriter.java b/src/main/java/org/torproject/onionoo/writer/SummaryDocumentWriter.java
index 6406a28..ddb3003 100644
--- a/src/main/java/org/torproject/onionoo/writer/SummaryDocumentWriter.java
+++ b/src/main/java/org/torproject/onionoo/writer/SummaryDocumentWriter.java
@@ -86,10 +86,11 @@ public class SummaryDocumentWriter implements DocumentWriter {
String contact = nodeStatus.getContact();
SortedSet<String> familyFingerprints =
nodeStatus.getFamilyFingerprints();
+ SortedSet<String> effectiveFamily = nodeStatus.getEffectiveFamily();
SummaryDocument summaryDocument = new SummaryDocument(isRelay,
nickname, fingerprint, addresses, lastSeenMillis, running,
relayFlags, consensusWeight, countryCode, firstSeenMillis,
- aSNumber, contact, familyFingerprints);
+ aSNumber, contact, familyFingerprints, effectiveFamily);
if (this.documentStore.store(summaryDocument, fingerprint)) {
this.writtenDocuments++;
};
diff --git a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
index c6ef9c8..f52413a 100644
--- a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
+++ b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
@@ -128,7 +128,9 @@ public class ResourceServletTest {
"torkaz <klaus dot zufall at gmx dot de> "
+ "<fb-token:np5_g_83jmf=>", new TreeSet<String>(Arrays.asList(
new String[] { "001C13B3A55A71B977CA65EC85539D79C653A3FC",
- "0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B" })));
+ "0025C136C1F3A9EEFE2AE3F918F03BFA21B5070B" })),
+ new TreeSet<String>(Arrays.asList(
+ new String[] { "001C13B3A55A71B977CA65EC85539D79C653A3FC" })));
org.torproject.onionoo.docs.SummaryDocument relayFerrari458 =
new org.torproject.onionoo.docs.SummaryDocument(true, "Ferrari458",
"001C13B3A55A71B977CA65EC85539D79C653A3FC", Arrays.asList(
@@ -138,6 +140,8 @@ public class ResourceServletTest {
"Running", "V2Dir", "Valid" })), 1140L, "us",
DateTimeHelper.parse("2013-02-12 16:00:00"), "AS7922", null,
new TreeSet<String>(Arrays.asList(new String[] {
+ "000C5F55BD4814B917CC474BD537F1A3B33CCE2A" })),
+ new TreeSet<String>(Arrays.asList(new String[] {
"000C5F55BD4814B917CC474BD537F1A3B33CCE2A" })));
org.torproject.onionoo.docs.SummaryDocument relayTimMayTribute =
new org.torproject.onionoo.docs.SummaryDocument(true, "TimMayTribute",
@@ -149,7 +153,7 @@ public class ResourceServletTest {
DateTimeHelper.parse("2013-04-16 18:00:00"), "AS6830",
"1024D/51E2A1C7 steven j. murdoch "
+ "<tor+steven.murdoch(a)cl.cam.ac.uk> <fb-token:5sr_k_zs2wm=>",
- new TreeSet<String>());
+ new TreeSet<String>(), new TreeSet<String>());
org.torproject.onionoo.docs.SummaryDocument bridgeec2bridgercc7f31fe =
new org.torproject.onionoo.docs.SummaryDocument(false,
"ec2bridgercc7f31fe", "0000831B236DFF73D409AD17B40E2A728A53994F",
@@ -157,7 +161,7 @@ public class ResourceServletTest {
DateTimeHelper.parse("2013-04-21 18:07:03"), false,
new TreeSet<String>(Arrays.asList(new String[] { "Valid" })), -1L,
null, DateTimeHelper.parse("2013-04-20 15:37:04"), null, null,
- null);
+ null, null);
org.torproject.onionoo.docs.SummaryDocument bridgeUnnamed =
new org.torproject.onionoo.docs.SummaryDocument(false, "Unnamed",
"0002D9BDBBC230BD9C78FF502A16E0033EF87E0C", Arrays.asList(
@@ -165,7 +169,7 @@ public class ResourceServletTest {
DateTimeHelper.parse("2013-04-20 17:37:04"), false,
new TreeSet<String>(Arrays.asList(new String[] { "Valid" })), -1L,
null, DateTimeHelper.parse("2013-04-14 07:07:05"), null, null,
- null);
+ null, null);
org.torproject.onionoo.docs.SummaryDocument bridgegummy =
new org.torproject.onionoo.docs.SummaryDocument(false, "gummy",
"1FEDE50ED8DBA1DD9F9165F78C8131E4A44AB756", Arrays.asList(
@@ -173,7 +177,8 @@ public class ResourceServletTest {
DateTimeHelper.parse("2013-04-24 01:07:04"), true,
new TreeSet<String>(Arrays.asList(new String[] { "Running",
"Valid" })), -1L, null,
- DateTimeHelper.parse("2013-01-16 21:07:04"), null, null, null);
+ DateTimeHelper.parse("2013-01-16 21:07:04"), null, null, null,
+ null);
this.relays =
new TreeMap<String, org.torproject.onionoo.docs.SummaryDocument>();
this.relays.put("000C5F55BD4814B917CC474BD537F1A3B33CCE2A",
diff --git a/web/protocol.html b/web/protocol.html
index 00221b0..9f36e4d 100644
--- a/web/protocol.html
+++ b/web/protocol.html
@@ -176,6 +176,8 @@ added "transports" field to bridge details documents on December 8,
2014.</li>
<li><strong>2.3</strong>: Added optional "flags" field to uptime
documents on March 22, 2015.</li>
+<li><strong>2.4</strong>: Added optional "effective_family" field to
+details documents on July 3, 2015.</li>
</ul>
</div> <!-- box -->
@@ -1185,6 +1187,19 @@ found.
</li>
<li>
+<b><font color="blue">effective_family</font></b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of $-prefixed fingerprints of relays that are in an effective,
+mutual family relationship with this relay.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+<font color="blue">Added on July 3, 2015.</font>
+</p>
+</li>
+
+<li>
<b>consensus_weight_fraction</b>
<code class="typeof">number</code>
<span class="required-false">optional</span>
1
0

[translation/liveusb-creator] Update translations for liveusb-creator
by translation@torproject.org 08 Aug '15
by translation@torproject.org 08 Aug '15
08 Aug '15
commit b42e21eecf679f16a7a68183aaf8396dc173f0db
Author: Translation commit bot <translation(a)torproject.org>
Date: Sat Aug 8 18:45:21 2015 +0000
Update translations for liveusb-creator
---
nl_BE/nl_BE.po | 66 ++++++++++++++++++++++++++++----------------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/nl_BE/nl_BE.po b/nl_BE/nl_BE.po
index 3f8b2ca..d35fa9b 100644
--- a/nl_BE/nl_BE.po
+++ b/nl_BE/nl_BE.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-04 10:45+0200\n"
-"PO-Revision-Date: 2015-08-08 18:15+0000\n"
+"PO-Revision-Date: 2015-08-08 18:40+0000\n"
"Last-Translator: Katrien Igodt <kigodt(a)gmail.com>\n"
"Language-Team: Dutch (Belgium) (http://www.transifex.com/otf/torproject/language/nl_BE/)\n"
"MIME-Version: 1.0\n"
@@ -170,7 +170,7 @@ msgstr ""
#: ../liveusb/creator.py:1272
msgid "Error probing device"
-msgstr ""
+msgstr "Foutmelding bij het zoeken van het apparaat"
#: ../liveusb/gui.py:213
msgid ""
@@ -195,17 +195,17 @@ msgstr "%(device)s aan het formatteren als FAT32"
#: ../liveusb/creator.py:150
msgid "ISO MD5 checksum passed"
-msgstr ""
+msgstr "ISO MD5 checksum geslaagd"
#: ../liveusb/creator.py:148
msgid "ISO MD5 checksum verification failed"
-msgstr ""
+msgstr "ISO MD5 checksum verificatie mislukt"
#: ../liveusb/dialog.py:156
msgid ""
"If you do not select an existing Live ISO, the selected release will be "
"downloaded for you."
-msgstr ""
+msgstr "Indien u geen bestaande Live ISO selecteert, zal de geselecteerde release gedownload worden."
#: ../liveusb/dialog.py:165
msgid "Install Tails"
@@ -234,7 +234,7 @@ msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
"created using Tails Installer. You should instead use %(action)s to upgrade "
"Tails on this device."
-msgstr ""
+msgstr "Kan het apparaat %(pretty_name)s niet upgraden omdat het niet niet gecreeërd werd met gebruik van de Tails installer. U zal %(action)s dienen te gebruiken om Tails te upgraden op dit apparaat."
#: ../liveusb/gui.py:270
msgid "LiveUSB creation failed!"
@@ -287,11 +287,11 @@ msgstr "Apparaat %(device)s aan het partitioneren"
#: ../liveusb/gui.py:636
msgid "Persistent Storage"
-msgstr ""
+msgstr "Persistent Storage"
#: ../liveusb/dialog.py:161
msgid "Persistent Storage (0 MB)"
-msgstr ""
+msgstr "Persistent Storage (0 MB)"
#: ../liveusb/gui.py:698 ../liveusb/gui.py:727
msgid "Please confirm your device selection"
@@ -299,7 +299,7 @@ msgstr "Gelieve uw apparaatselectie te bevestigen"
#: ../liveusb/gui.py:481
msgid "Refreshing releases..."
-msgstr ""
+msgstr "Releases aan het refreshen..."
#: ../liveusb/gui.py:486
msgid "Releases updated!"
@@ -325,7 +325,7 @@ msgstr "Selecteer Live ISO"
#: ../liveusb/creator.py:192
msgid "Setting up OLPC boot file..."
-msgstr ""
+msgstr "OPLC boot file aan het opmaken..."
#: ../liveusb/creator.py:742
#, python-format
@@ -372,7 +372,7 @@ msgid ""
"This button allows you to browse for an existing Live system ISO that you "
"have previously downloaded. If you do not select one, a release will be "
"downloaded for you automatically."
-msgstr ""
+msgstr "Deze knop stelt u in staat om te bladeren naar een bestaand Live system ISO dat u eerder gedownload heeft. Indien u er geen selecteert, zal er automatisch een release voor u gedownload worden."
#: ../liveusb/dialog.py:164
msgid ""
@@ -380,27 +380,27 @@ msgid ""
"optionally downloading a release (if an existing one wasn't selected), "
"extracting the ISO to the USB device, creating the persistent overlay, and "
"installing the bootloader."
-msgstr ""
+msgstr "Deze knop zal het LiveUSB creatie-proces starten. Dit omvat dat er optioneel een release gedownload zal worden (indien er geen bestaande geselecteerd werd), het uitpakken van de ISO naar het USB apparaat, het creeëren van de persistent overlay, en het installeren van de bootloader."
#: ../liveusb/dialog.py:158
msgid ""
"This is the USB stick that you want to install your Live system on. This "
"device must be formatted with the FAT filesystem."
-msgstr ""
+msgstr "Dit is de USB stick waar u uw Live systeem op wilt installeren. Dit apparaat dient geformatteerd te zijn in het FAT bestandssysteem."
#: ../liveusb/dialog.py:163
msgid ""
"This is the progress bar that will indicate how far along in the LiveUSB "
"creation process you are"
-msgstr ""
+msgstr "Dit is de voortgangsbalk die zal aangeven waar u zich in het proces van de LiveUSB creatie bevindt"
#: ../liveusb/dialog.py:162
msgid "This is the status console, where all messages get written to."
-msgstr ""
+msgstr "Dit is de statusconsole, waar alle berichten naar weggeschreven worden."
#: ../liveusb/creator.py:952
msgid "Trying to continue anyway."
-msgstr ""
+msgstr "Toch proberen voortgaan."
#: ../liveusb/gui.py:464
msgid "USB drive found"
@@ -414,12 +414,12 @@ msgstr ""
#: ../liveusb/creator.py:501 ../liveusb/creator.py:512
#, python-format
msgid "Unable to chmod %(file)s: %(message)s"
-msgstr ""
+msgstr "Kan geen chmod %(file)s: %(message)s uitvoeren"
#: ../liveusb/creator.py:478
#, python-format
msgid "Unable to copy %(infile)s to %(outfile)s: %(message)s"
-msgstr ""
+msgstr "Kan %(infile)s niet kopiëren naar %(outfile)s: %(message)s"
#: ../liveusb/gui.py:403
msgid "Unable to find any USB drive"
@@ -427,7 +427,7 @@ msgstr "Kan USB drive niet vinden"
#: ../liveusb/creator.py:1274
msgid "Unable to find any supported device"
-msgstr ""
+msgstr "Kan geen ondersteund apparaat vinden"
#: ../liveusb/creator.py:1117
msgid "Unable to find partition"
@@ -455,12 +455,12 @@ msgstr ""
#: ../liveusb/creator.py:505
#, python-format
msgid "Unable to remove file from previous LiveOS: %(message)s"
-msgstr ""
+msgstr "Kan het bestand van de vorige LiveOS niet verwijderen: %(message)s"
#: ../liveusb/creator.py:1189
msgid ""
"Unable to reset MBR. You may not have the `syslinux` package installed."
-msgstr ""
+msgstr "Kan de MBR niet resetten. Het kan zijn dat u het `syslinux` pakket niet geinstalleerd hebt. "
#: ../liveusb/gui.py:798
msgid ""
@@ -471,11 +471,11 @@ msgstr ""
#: ../liveusb/creator.py:723
#, python-format
msgid "Unable to write on %(device)s, skipping."
-msgstr ""
+msgstr "Niet mogelijk om te schrijven naar %(device)s, overslaan."
#: ../liveusb/creator.py:399
msgid "Unknown ISO, skipping checksum verification"
-msgstr ""
+msgstr "Onbekende ISO, checksum verificatie overslaan"
#: ../liveusb/creator.py:810
#, python-format
@@ -484,12 +484,12 @@ msgstr ""
#: ../liveusb/creator.py:791 ../liveusb/creator.py:964
msgid "Unknown filesystem. Your device may need to be reformatted."
-msgstr ""
+msgstr "Onbekend bestandssysteel. Uw apparaat dient geformatteerd te worden. "
#: ../liveusb/gui.py:85
#, python-format
msgid "Unknown release: %s"
-msgstr ""
+msgstr "Onbekende release: %s"
#: ../liveusb/creator.py:851
#, python-format
@@ -516,7 +516,7 @@ msgstr "Niet ondersteund bestandsysteem: %s"
msgid ""
"Unsupported filesystem: %s\n"
"Please backup and format your USB key with the FAT filesystem."
-msgstr ""
+msgstr "Niet ondersteund bestandssyteem: %s\nGelieve een back-up uit te voeren en uw USB stick te formatteren naar het FAT bestandssysteem."
#: ../liveusb/creator.py:892
#, python-format
@@ -525,23 +525,23 @@ msgstr ""
#: ../liveusb/launcher_ui.py:154
msgid "Upgrade from ISO"
-msgstr ""
+msgstr "Upgrade van ISO"
#: ../liveusb/dialog.py:152
msgid "Use existing Live system ISO"
-msgstr ""
+msgstr "Gebruik bestaand Live system ISO"
#: ../liveusb/creator.py:143
msgid "Verifying ISO MD5 checksum"
-msgstr ""
+msgstr "ISO MD5 checksum aan het verifiëren"
#: ../liveusb/creator.py:373
msgid "Verifying SHA1 checksum of LiveCD image..."
-msgstr ""
+msgstr "SHA1 checksum van de LiveCD image aan het verifiëren..."
#: ../liveusb/creator.py:377
msgid "Verifying SHA256 checksum of LiveCD image..."
-msgstr ""
+msgstr "SHA256 checksum van de LiveCD image aan het verifiëren..."
#: ../liveusb/creator.py:961 ../liveusb/creator.py:1280
msgid "Verifying filesystem..."
@@ -583,7 +583,7 @@ msgstr ""
msgid ""
"You are using an old version of syslinux-extlinux that does not support the "
"ext4 filesystem"
-msgstr ""
+msgstr "U gebruikt een oude versie van syslinux-extlinux dat het ext4 bestandssysteem niet ondersteund"
#: ../liveusb/gui.py:783
msgid "You can try again to resume your download"
@@ -591,7 +591,7 @@ msgstr "U kan opnieuw proberen om uw download te hervatten"
#: ../liveusb/creator.py:95
msgid "You must run this application as root"
-msgstr ""
+msgstr "U dient deze applicatie als root uit te voeren"
#: ../liveusb/dialog.py:155
msgid "or"
1
0

[translation/liveusb-creator] Update translations for liveusb-creator
by translation@torproject.org 08 Aug '15
by translation@torproject.org 08 Aug '15
08 Aug '15
commit a574b6d1c780b266a307059e8bf9a5c790377e19
Author: Translation commit bot <translation(a)torproject.org>
Date: Sat Aug 8 18:15:18 2015 +0000
Update translations for liveusb-creator
---
nl_BE/nl_BE.po | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/nl_BE/nl_BE.po b/nl_BE/nl_BE.po
index 8be2034..3f8b2ca 100644
--- a/nl_BE/nl_BE.po
+++ b/nl_BE/nl_BE.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-04 10:45+0200\n"
-"PO-Revision-Date: 2015-08-05 08:28+0000\n"
-"Last-Translator: carolyn <carolyn(a)anhalt.org>\n"
+"PO-Revision-Date: 2015-08-08 18:15+0000\n"
+"Last-Translator: Katrien Igodt <kigodt(a)gmail.com>\n"
"Language-Team: Dutch (Belgium) (http://www.transifex.com/otf/torproject/language/nl_BE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -24,7 +24,7 @@ msgstr ""
#: ../liveusb/gui.py:453
msgid "\"Install from ISO\""
-msgstr ""
+msgstr "\"Installeer van ISO\""
#: ../liveusb/dialog.py:150 ../liveusb/launcher_ui.py:149
#, python-format
@@ -106,7 +106,7 @@ msgstr ""
#: ../liveusb/creator.py:1196 ../liveusb/creator.py:1459
#, python-format
msgid "Calculating the SHA1 of %s"
-msgstr ""
+msgstr "De SHA1 van %s aan het berekenen"
#: ../liveusb/creator.py:1407
msgid "Cannot find"
@@ -115,7 +115,7 @@ msgstr "Kan niet vinden"
#: ../liveusb/creator.py:560
#, python-format
msgid "Cannot find device %s"
-msgstr ""
+msgstr "Kan apparaat %s niet vinden"
#: ../liveusb/launcher_ui.py:150
msgid ""
@@ -144,20 +144,20 @@ msgstr ""
#: ../liveusb/dialog.py:157
#, python-format
msgid "Download %(distribution)s"
-msgstr ""
+msgstr "Download %(distribution)s"
#: ../liveusb/gui.py:778
msgid "Download complete!"
-msgstr ""
+msgstr "Download klaar!"
#: ../liveusb/gui.py:782
msgid "Download failed: "
-msgstr ""
+msgstr "Download mislukt:"
#: ../liveusb/gui.py:89
#, python-format
msgid "Downloading %s..."
-msgstr ""
+msgstr "%s aan het downloaden..."
#: ../liveusb/creator.py:1192
msgid "Drive is a loopback, skipping MBR reset"
@@ -191,7 +191,7 @@ msgstr ""
#: ../liveusb/creator.py:1140
#, python-format
msgid "Formatting %(device)s as FAT32"
-msgstr ""
+msgstr "%(device)s aan het formatteren als FAT32"
#: ../liveusb/creator.py:150
msgid "ISO MD5 checksum passed"
@@ -259,7 +259,7 @@ msgstr ""
#: ../liveusb/gui.py:588
#, python-format
msgid "No free space on device %(device)s"
-msgstr ""
+msgstr "Geen vrije ruimte op apparaat %(device)s"
#: ../liveusb/creator.py:826
msgid "No mount points found"
@@ -283,7 +283,7 @@ msgstr ""
#: ../liveusb/creator.py:236 ../liveusb/creator.py:866
#, python-format
msgid "Partitioning device %(device)s"
-msgstr ""
+msgstr "Apparaat %(device)s aan het partitioneren"
#: ../liveusb/gui.py:636
msgid "Persistent Storage"
@@ -295,7 +295,7 @@ msgstr ""
#: ../liveusb/gui.py:698 ../liveusb/gui.py:727
msgid "Please confirm your device selection"
-msgstr ""
+msgstr "Gelieve uw apparaatselectie te bevestigen"
#: ../liveusb/gui.py:481
msgid "Refreshing releases..."
@@ -308,20 +308,20 @@ msgstr ""
#: ../liveusb/creator.py:997 ../liveusb/creator.py:1331
#, python-format
msgid "Removing %(file)s"
-msgstr ""
+msgstr "%(file)s aan het verwijderen"
#: ../liveusb/creator.py:492
msgid "Removing existing Live OS"
-msgstr ""
+msgstr "Bestaande Live OS aan het verwijderen"
#: ../liveusb/creator.py:1186
#, python-format
msgid "Resetting Master Boot Record of %s"
-msgstr ""
+msgstr "Master Boot Record aan het resetten voor %s"
#: ../liveusb/gui.py:789
msgid "Select Live ISO"
-msgstr ""
+msgstr "Selecteer Live ISO"
#: ../liveusb/creator.py:192
msgid "Setting up OLPC boot file..."
@@ -341,31 +341,31 @@ msgstr ""
#: ../liveusb/creator.py:1220
msgid "Synchronizing data on disk..."
-msgstr ""
+msgstr "Data op de schijf aan het syncroniseren..."
#: ../liveusb/dialog.py:159
msgid "Target Device"
-msgstr ""
+msgstr "Doelapparaat"
#: ../liveusb/gui.py:438
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
-msgstr ""
+msgstr "Het apparaat \"%(pretty_name)s\" is te klein om Tails op te installeren (minstens %(size)s GB is vereist)."
#: ../liveusb/gui.py:792
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
-msgstr ""
+msgstr "Het geselecteerde bestand is onleesbaar. Gelieve de permissies te wijzigen of een ander bestand te selecteren."
#: ../liveusb/creator.py:354
#, python-format
msgid ""
"There was a problem executing the following command: `%(command)s`.\n"
"A more detailed error log has been written to '%(filename)s'."
-msgstr ""
+msgstr "Er deed zich een probleem voor bij het uitvoeren van volgende opdracht : `%(command)s`.\nEen meer gedetailleerd foutrapport werd weggeschreven naar '%(filename)s'."
#: ../liveusb/dialog.py:151
msgid ""
1
0
commit 8bc8d7bca0eaa3f6eac4133d7984e49caa1c9796
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Aug 8 10:18:39 2015 +0000
Bump stable versions
---
gitian/versions | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index cea6029..ebed0e0 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -4,15 +4,15 @@ BUILD_PT_BUNDLES=1
VERIFY_TAGS=1
-FIREFOX_VERSION=31.7.0esr
+FIREFOX_VERSION=38.2.0esr
TORBROWSER_UPDATE_CHANNEL=release
-TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.5-2-build1
-TOR_TAG=tor-0.2.6.9
-TORLAUNCHER_TAG=0.2.7.5
-TORBUTTON_TAG=1.9.2.6
-HTTPSE_TAG=5.0.5
+TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-1-build1
+TOR_TAG=tor-0.2.6.10
+TORLAUNCHER_TAG=0.2.7.7
+TORBUTTON_TAG=1.9.3.2
+HTTPSE_TAG=5.0.7
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.18
+MEEK_TAG=0.20
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
@@ -36,7 +36,7 @@ NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
GITIAN_TAG=tor-browser-builder-3.x-8
-OPENSSL_VER=1.0.1o
+OPENSSL_VER=1.0.1p
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
FIREFOX_LANG_BUILD=build2
@@ -59,7 +59,7 @@ NOTOCJKFONT_VER=1.004
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.26-sm+fn+fx.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.34-sm+fn+fx.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
OSXSDK_PACKAGE=MacOSX10.7.sdk.tar.gz
@@ -83,13 +83,13 @@ GO_PACKAGE=go${GO_VER}.src.tar.gz
NOTOCJKFONT_PACKAGE=NotoSansCJKsc-Regular.otf
# Hashes for packages with weak sigs or no sigs
-OPENSSL_HASH=16e678c6a05f2502811e075f2c4059ac01c878d091c9c585afc49ebc541f7b13
+OPENSSL_HASH=bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1
GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=da77bb0003fcca5ea8c4e8cb2da8828ded750c54afdcac29ec6f3b46ad5e3adf
OSXSDK_OLD_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=06d9fa6093378682a7fabfc0b2d156dfafcfda749ddd802970ce14d1860e6a3e
+NOSCRIPT_HASH=d17e3eeb8cc6ddc6c6cabd002184eced5c8cf061c9d337bac2085e7d2daceacd
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
1
0