diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py
index 8d6a6e22f8..e64b901688 100644
--- a/src/calibre/ebooks/conversion/plumber.py
+++ b/src/calibre/ebooks/conversion/plumber.py
@@ -210,9 +210,7 @@ OptionRecommendation(name='subset_embedded_fonts',
'Subset all embedded fonts. Every embedded font is reduced '
'to contain only the glyphs used in this document. This decreases '
'the size of the font files. Useful if you are embedding a '
- 'particularly large font with lots of unused glyphs. Note that '
- 'subsetting is only supported for fonts that contain TrueType '
- 'outlines, not Postscript outlines.')
+ 'particularly large font with lots of unused glyphs.')
),
OptionRecommendation(name='linearize_tables',
diff --git a/src/calibre/gui2/convert/look_and_feel.ui b/src/calibre/gui2/convert/look_and_feel.ui
index 16f781cb2c..505079a14c 100644
--- a/src/calibre/gui2/convert/look_and_feel.ui
+++ b/src/calibre/gui2/convert/look_and_feel.ui
@@ -6,7 +6,7 @@
0
0
- 655
+ 699
619
@@ -411,7 +411,7 @@
-
- &Subset all embedded fonts
+ &Subset all embedded fonts (Experimental)
diff --git a/src/calibre/utils/fonts/sfnt/cff/writer.py b/src/calibre/utils/fonts/sfnt/cff/writer.py
index c9c3dbf937..753d56b18e 100644
--- a/src/calibre/utils/fonts/sfnt/cff/writer.py
+++ b/src/calibre/utils/fonts/sfnt/cff/writer.py
@@ -107,7 +107,7 @@ class Subset(object):
def __init__(self, cff, keep_charnames):
self.cff = cff
- self.keep_charnames = keep_charnames
+ keep_charnames.add(b'.notdef')
header = pack(b'>4B', 1, 0, 4, cff.offset_size)
@@ -127,9 +127,9 @@ class Subset(object):
cname = self.cff.charset.safe_lookup(i)
if cname in keep_charnames:
char_strings.append(self.cff.char_strings[i])
- self.charname_map[cname] = i
- if i > 0: # .notdef is not included
- charsets.append(cname)
+ self.charname_map[cname] = len(self.charname_map)
+ if i > 0: # .notdef is not included
+ charsets.append(cname)
# Add the strings
char_strings.compile()
diff --git a/src/calibre/utils/fonts/sfnt/subset.py b/src/calibre/utils/fonts/sfnt/subset.py
index 36221c7a28..c0dac76e30 100644
--- a/src/calibre/utils/fonts/sfnt/subset.py
+++ b/src/calibre/utils/fonts/sfnt/subset.py
@@ -167,7 +167,7 @@ def main(args):
with open(iff, 'rb') as f:
orig = f.read()
- chars = [x.strip() for x in chars.split(',')]
+ chars = [x for x in chars.split(',')]
individual, ranges = set(), set()
def not_single(c):