[Libreoffice-commits] core.git: vcl/CustomTarget_afm_hash.mk vcl/inc vcl/Library_vcl.mk vcl/Module_vcl.mk vcl/unx

Khaled Hosny khaledhosny at eglug.org
Sat Nov 26 08:26:59 UTC 2016


 vcl/CustomTarget_afm_hash.mk                         |   20 
 vcl/Library_vcl.mk                                   |    3 
 vcl/Module_vcl.mk                                    |    1 
 vcl/inc/unx/fontmanager.hxx                          |   65 
 vcl/inc/unx/genpspgraphics.h                         |    3 
 vcl/inc/unx/printergfx.hxx                           |    2 
 vcl/unx/generic/fontmanager/adobe_encoding_table.hxx | 1078 -------------
 vcl/unx/generic/fontmanager/afm_keyword_list         |   62 
 vcl/unx/generic/fontmanager/fontcache.cxx            |   42 
 vcl/unx/generic/fontmanager/fontmanager.cxx          |  672 --------
 vcl/unx/generic/fontmanager/parseAFM.cxx             | 1465 -------------------
 vcl/unx/generic/fontmanager/parseAFM.hxx             |  323 ----
 vcl/unx/generic/gdi/cairotextrender.cxx              |   10 
 vcl/unx/generic/print/genpspgraphics.cxx             |   49 
 vcl/unx/generic/print/glyphset.cxx                   |  131 -
 vcl/unx/generic/print/glyphset.hxx                   |    5 
 vcl/unx/generic/print/text_gfx.cxx                   |   73 
 17 files changed, 21 insertions(+), 3983 deletions(-)

New commits:
commit abe4d7bd0a1ec4b5a31cc5622080952e4cd53ebf
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Thu Nov 24 00:53:05 2016 +0200

    Kill code for Type 1 fonts on Unix
    
    We already ignore them, so this is unreachable code now.
    
    Change-Id: I6fd4699d8175344c36253bf4bf9c024b8986da31
    Reviewed-on: https://gerrit.libreoffice.org/31222
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Khaled Hosny <khaledhosny at eglug.org>

diff --git a/vcl/CustomTarget_afm_hash.mk b/vcl/CustomTarget_afm_hash.mk
deleted file mode 100644
index bf88fb9..0000000
--- a/vcl/CustomTarget_afm_hash.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_CustomTarget_CustomTarget,vcl/unx/generic/fontmanager))
-
-$(call gb_CustomTarget_get_target,vcl/unx/generic/fontmanager) : \
-	$(call gb_CustomTarget_get_workdir,vcl/unx/generic/fontmanager)/afm_hash.hpp
-
-$(call gb_CustomTarget_get_workdir,vcl/unx/generic/fontmanager)/afm_hash.hpp : \
-		$(SRCDIR)/vcl/unx/generic/fontmanager/afm_keyword_list \
-		| $(call gb_CustomTarget_get_workdir,vcl/unx/generic/fontmanager)/.dir
-	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),GPF,1)
-	$(GPERF) -C -t -l -L C++ -m 20 -Z AfmKeywordHash -k '1,4,6,$$' $< | sed -e 's/(char\*)0/(char\*)0, NOPE/g' | grep -v '^#line' > $@
-
-# vim: set noet sw=4:
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 990ca11..48870e4 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -35,8 +35,6 @@ endif
 
 $(eval $(call gb_Library_set_precompiled_header,vcl,$(SRCDIR)/vcl/inc/pch/precompiled_vcl))
 
-$(eval $(call gb_Library_use_custom_headers,vcl,officecfg/registry vcl/unx/generic/fontmanager))
-
 $(eval $(call gb_Library_set_include,vcl,\
     $$(INCLUDE) \
     -I$(SRCDIR)/vcl/inc \
@@ -549,7 +547,6 @@ vcl_headless_freetype_code=\
     vcl/unx/generic/fontmanager/fontconfig \
     vcl/unx/generic/fontmanager/fontmanager \
     vcl/unx/generic/fontmanager/helper \
-    vcl/unx/generic/fontmanager/parseAFM \
     vcl/headless/svpcairotextrender \
     vcl/unx/generic/print/bitmap_gfx \
     vcl/unx/generic/print/common_gfx \
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 97e20f0..767d5f7 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -20,7 +20,6 @@
 $(eval $(call gb_Module_Module,vcl))
 
 $(eval $(call gb_Module_add_targets,vcl,\
-    CustomTarget_afm_hash \
     Library_vcl \
 	Package_opengl \
 	$(if $(filter WNT,$(OS)), \
diff --git a/vcl/inc/unx/fontmanager.hxx b/vcl/inc/unx/fontmanager.hxx
index 7f0e057..46a951a 100644
--- a/vcl/inc/unx/fontmanager.hxx
+++ b/vcl/inc/unx/fontmanager.hxx
@@ -57,7 +57,6 @@ namespace fonttype
 {
 enum type {
     Unknown = 0,
-    Type1 = 1,
     TrueType = 2,
 };
 }
@@ -65,8 +64,8 @@ enum type {
 /*
  *  the difference between FastPrintFontInfo and PrintFontInfo
  *  is that the information in FastPrintFontInfo can usually
- *  be gathered without opening either the font file or
- *  an afm metric file. they are gathered from fonts.dir alone.
+ *  be gathered without opening either the font file, they are
+ *  gathered from fonts.dir alone.
  *  if only FastPrintFontInfo is gathered and PrintFontInfo
  *  on demand and for less fonts, then performance in startup
  *  increases considerably
@@ -88,7 +87,6 @@ struct FastPrintFontInfo
     FontPitch                      m_ePitch;
     rtl_TextEncoding               m_aEncoding;
     bool                           m_bSubsettable;
-    bool                           m_bEmbeddable;
 
     FastPrintFontInfo()
         : m_nID(0)
@@ -100,7 +98,6 @@ struct FastPrintFontInfo
         , m_ePitch(PITCH_DONTKNOW)
         , m_aEncoding(RTL_TEXTENCODING_DONTKNOW)
         , m_bSubsettable(false)
-        , m_bEmbeddable(false)
     {}
 };
 
@@ -142,10 +139,8 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
 {
     struct PrintFont;
     struct TrueTypeFontFile;
-    struct Type1FontFile;
     friend struct PrintFont;
     friend struct TrueTypeFontFile;
-    friend struct Type1FontFile;
     friend class FontCache;
 
     struct PrintFontMetrics
@@ -188,7 +183,6 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
         FontWeight                                  m_eWeight;
         FontPitch                                   m_ePitch;
         rtl_TextEncoding                            m_aEncoding;
-        bool                                        m_bFontEncodingOnly; // set if font should be only accessed by builtin encoding
         CharacterMetric                             m_aGlobalMetricX;
         CharacterMetric                             m_aGlobalMetricY;
         PrintFontMetrics*                           m_pMetrics;
@@ -202,33 +196,9 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
         bool                                        m_bHaveVerticalSubstitutedGlyphs;
         bool                                        m_bUserOverride;
 
-        /// mapping from unicode (well, UCS-2) to font code
-        std::map< sal_Unicode, sal_Int32 >          m_aEncodingVector;
-        /// HACK for Type 1 fonts: if multiple UCS-2 codes map to the same
-        /// font code, this set contains the preferred one, i.e., the one that
-        /// is specified explicitly via "C" or "CH" in the AFM file
-        std::set<sal_Unicode>                  m_aEncodingVectorPriority;
-        std::map< sal_Unicode, OString >       m_aNonEncoded;
-
         explicit PrintFont( fonttype::type eType );
         virtual ~PrintFont();
         virtual bool queryMetricPage( int nPage, utl::MultiAtomProvider* pProvider ) = 0;
-
-        bool readAfmMetrics( utl::MultiAtomProvider* pProvider, bool bFillEncodingvector, bool bOnlyGlobalAttributes );
-    };
-
-    struct Type1FontFile : public PrintFont
-    {
-        int                 m_nDirectory;       // atom containing system dependent path
-        OString      m_aFontFile;        // relative to directory
-        OString      m_aMetricFile;      // dito
-
-        /* note: m_aFontFile and Metric file are not atoms
-           because they should be fairly unique */
-
-        Type1FontFile() : PrintFont( fonttype::Type1 ), m_nDirectory( 0 ) {}
-        virtual ~Type1FontFile() override;
-        virtual bool queryMetricPage( int nPage, utl::MultiAtomProvider* pProvider ) override;
     };
 
     struct TrueTypeFontFile : public PrintFont
@@ -258,14 +228,8 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
     std::unordered_map< int, OString >          m_aAtomToDir;
     int                                         m_nNextDirAtom;
 
-    std::unordered_multimap< OString, sal_Unicode, OStringHash > m_aAdobenameToUnicode;
-    std::unordered_multimap< sal_Unicode, OString > m_aUnicodeToAdobename;
-    std::unordered_multimap< sal_Unicode, sal_uInt8 > m_aUnicodeToAdobecode;
-    std::unordered_multimap< sal_uInt8, sal_Unicode > m_aAdobecodeToUnicode;
-
     mutable FontCache*                         m_pFontCache;
 
-    OString getAfmFile( PrintFont* pFont ) const;
     OString getFontFile( PrintFont* pFont ) const;
 
     bool analyzeFontFile( int nDirID, const OString& rFileName, std::list< PrintFont* >& rNewFonts, const char *pFormat=nullptr ) const;
@@ -375,13 +339,6 @@ public:
         return pFont ? pFont->m_aEncoding : RTL_TEXTENCODING_DONTKNOW;
     }
 
-    // should i only use font's builtin encoding ?
-    bool getUseOnlyFontEncoding( fontID nFontID ) const
-    {
-        PrintFont* pFont = getFont( nFontID );
-        return pFont && pFont->m_bFontEncodingOnly;
-    }
-
     // get a specific fonts system dependent filename
     OString getFontFileSysPath( fontID nFontID ) const
     {
@@ -413,28 +370,10 @@ public:
     // the user is responsible to allocate pArray large enough
     bool getMetrics( fontID nFontID, const sal_Unicode* pString, int nLen, CharacterMetric* pArray ) const;
 
-    // get encoding vector of font, currently only for Type1 fonts
-    // returns NULL if encoding vector is empty or font is not type1;
-    // if ppNonEncoded is set and non encoded type1 glyphs exist
-    // then *ppNonEncoded is set to the mapping for nonencoded glyphs.
-    // the encoding vector contains -1 for non encoded glyphs
-    const std::map< sal_Unicode, sal_Int32 >* getEncodingMap( fontID nFontID, const std::map< sal_Unicode, OString >** ppNonEncoded, std::set<sal_Unicode> const ** ppPriority ) const;
-
     // evaluates copyright flags for TrueType fonts for printing/viewing
     // type1 fonts do not have such a feature, so return for them is true
     bool isFontDownloadingAllowedForPrinting( fontID nFont ) const;
 
-    // helper for type 1 fonts
-    std::list< OString > getAdobeNameFromUnicode( sal_Unicode aChar ) const;
-
-    std::vector< sal_Unicode >  getUnicodeFromAdobeName( const OString& rName ) const;
-    std::pair< std::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator,
-                 std::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator >
-    getUnicodeFromAdobeCode( sal_uInt8 aChar ) const
-    {
-        return m_aAdobecodeToUnicode.equal_range( aChar );
-    }
-
     // creates a new font subset of an existing TrueType font
     // returns true in case of success, else false
     // nFont: the font to be subsetted
diff --git a/vcl/inc/unx/genpspgraphics.h b/vcl/inc/unx/genpspgraphics.h
index 5d0acd4..f4fe486 100644
--- a/vcl/inc/unx/genpspgraphics.h
+++ b/vcl/inc/unx/genpspgraphics.h
@@ -62,9 +62,6 @@ public:
     static void             DoFreeEmbedFontData( const void* pData, long nLen );
 
     // helper methods for sharing with X11SalGraphics
-    static const Ucs2SIntMap* DoGetFontEncodingVector( psp::fontID aFont,
-                                                       const Ucs2OStrMap** pNonEncoded,
-                                                       std::set<sal_Unicode> const** ppPriority);
     static void             DoGetGlyphWidths( psp::fontID aFont,
                                               bool bVertical,
                                               std::vector< sal_Int32 >& rWidths,
diff --git a/vcl/inc/unx/printergfx.hxx b/vcl/inc/unx/printergfx.hxx
index c254ef6..0b0512e 100644
--- a/vcl/inc/unx/printergfx.hxx
+++ b/vcl/inc/unx/printergfx.hxx
@@ -182,7 +182,6 @@ private:
        glyph in one of the subfonts, the mapping from unicode to the
        glyph has to be remembered */
 
-    std::vector< sal_Int32 > maPS1Font;
     std::list< GlyphSet > maPS3Font;
 
     sal_Int32       mnFontID;
@@ -233,7 +232,6 @@ public:
     void            PSSetColor (const PrinterColor& rColor)
     { maVirtualStatus.maColor = rColor; }
 
-    void            PSUploadPS1Font (sal_Int32 nFontID);
     void            PSSetFont (const OString& rName,
                                rtl_TextEncoding nEncoding)
     { maVirtualStatus.maFont = rName; maVirtualStatus.maEncoding = nEncoding; }
diff --git a/vcl/unx/generic/fontmanager/adobe_encoding_table.hxx b/vcl/unx/generic/fontmanager/adobe_encoding_table.hxx
deleted file mode 100644
index f2a7451..0000000
--- a/vcl/unx/generic/fontmanager/adobe_encoding_table.hxx
+++ /dev/null
@@ -1,1078 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-struct AdobeEncEntry {
-    sal_Unicode         aUnicode;
-    sal_uInt8           aAdobeStandardCode;
-    const char* const   pAdobename;
-};
-
-static const AdobeEncEntry aAdobeCodes[]=
-{
-    { 0x0041, 0101, "A" },
-    { 0x00C6, 0341, "AE" },
-    { 0x01FC, 0,    "AEacute" },
-    { 0xF7E6, 0,    "AEsmall" },
-    { 0x00C1, 0,    "Aacute" },
-    { 0xF7E1, 0,    "Aacutesmall" },
-    { 0x0102, 0,    "Abreve" },
-    { 0x00C2, 0,    "Acircumflex" },
-    { 0xF7E2, 0,    "Acircumflexsmall" },
-    { 0xF6C9, 0,    "Acute" },
-    { 0xF7B4, 0,    "Acutesmall" },
-    { 0x00C4, 0,    "Adieresis" },
-    { 0xF7E4, 0,    "Adieresissmall" },
-    { 0x00C0, 0,    "Agrave" },
-    { 0xF7E0, 0,    "Agravesmall" },
-    { 0x0391, 0,    "Alpha" },
-    { 0x0386, 0,    "Alphatonos" },
-    { 0x0100, 0,    "Amacron" },
-    { 0x0104, 0,    "Aogonek" },
-    { 0x00C5, 0,    "Aring" },
-    { 0x01FA, 0,    "Aringacute" },
-    { 0xF7E5, 0,    "Aringsmall" },
-    { 0xF761, 0,    "Asmall" },
-    { 0x00C3, 0,    "Atilde" },
-    { 0xF7E3, 0,    "Atildesmall" },
-    { 0x0042, 0102, "B" },
-    { 0x0392, 0,    "Beta" },
-    { 0xF6F4, 0,    "Brevesmall" },
-    { 0xF762, 0,    "Bsmall" },
-    { 0x0043, 0103, "C" },
-    { 0x0106, 0,    "Cacute" },
-    { 0xF6CA, 0,    "Caron" },
-    { 0xF6F5, 0,    "Caronsmall" },
-    { 0x010C, 0,    "Ccaron" },
-    { 0x00C7, 0,    "Ccedilla" },
-    { 0xF7E7, 0,    "Ccedillasmall" },
-    { 0x0108, 0,    "Ccircumflex" },
-    { 0x010A, 0,    "Cdotaccent" },
-    { 0xF7B8, 0,    "Cedillasmall" },
-    { 0x03A7, 0,    "Chi" },
-    { 0xF6F6, 0,    "Circumflexsmall" },
-    { 0xF763, 0,    "Csmall" },
-    { 0x0044, 0104, "D" },
-    { 0x010E, 0,    "Dcaron" },
-    { 0x0110, 0,    "Dcroat" },
-    { 0x2206, 0,    "Delta" },
-    { 0x0394, 0,    "Delta" },
-    { 0xF6CB, 0,    "Dieresis" },
-    { 0xF6CC, 0,    "DieresisAcute" },
-    { 0xF6CD, 0,    "DieresisGrave" },
-    { 0xF7A8, 0,    "Dieresissmall" },
-    { 0xF6F7, 0,    "Dotaccentsmall" },
-    { 0xF764, 0,    "Dsmall" },
-    { 0x0045, 0105, "E" },
-    { 0x00C9, 0,    "Eacute" },
-    { 0xF7E9, 0,    "Eacutesmall" },
-    { 0x0114, 0,    "Ebreve" },
-    { 0x011A, 0,    "Ecaron" },
-    { 0x00CA, 0,    "Ecircumflex" },
-    { 0xF7EA, 0,    "Ecircumflexsmall" },
-    { 0x00CB, 0,    "Edieresis" },
-    { 0xF7EB, 0,    "Edieresissmall" },
-    { 0x0116, 0,    "Edotaccent" },
-    { 0x00C8, 0,    "Egrave" },
-    { 0xF7E8, 0,    "Egravesmall" },
-    { 0x0112, 0,    "Emacron" },
-    { 0x014A, 0,    "Eng" },
-    { 0x0118, 0,    "Eogonek" },
-    { 0x0395, 0,    "Epsilon" },
-    { 0x0388, 0,    "Epsilontonos" },
-    { 0xF765, 0,    "Esmall" },
-    { 0x0397, 0,    "Eta" },
-    { 0x0389, 0,    "Etatonos" },
-    { 0x00D0, 0,    "Eth" },
-    { 0xF7F0, 0,    "Ethsmall" },
-    { 0x20AC, 0,    "Euro" },
-    { 0x0046, 0106, "F" },
-    { 0xF766, 0,    "Fsmall" },
-    { 0x0047, 0107, "G" },
-    { 0x0393, 0,    "Gamma" },
-    { 0x011E, 0,    "Gbreve" },
-    { 0x01E6, 0,    "Gcaron" },
-    { 0x011C, 0,    "Gcircumflex" },
-    { 0x0122, 0,    "Gcommaaccent" },
-    { 0x0120, 0,    "Gdotaccent" },
-    { 0xF6CE, 0,    "Grave" },
-    { 0xF760, 0,    "Gravesmall" },
-    { 0xF767, 0,    "Gsmall" },
-    { 0x0048, 0110, "H" },
-    { 0x25CF, 0,    "H18533" },
-    { 0x25AA, 0,    "H18543" },
-    { 0x25AB, 0,    "H18551" },
-    { 0x25A1, 0,    "H22073" },
-    { 0x0126, 0,    "Hbar" },
-    { 0x0124, 0,    "Hcircumflex" },
-    { 0xF768, 0,    "Hsmall" },
-    { 0xF6CF, 0,    "Hungarumlaut" },
-    { 0xF6F8, 0,    "Hungarumlautsmall" },
-    { 0x0049, 0111, "I" },
-    { 0x0132, 0,    "IJ" },
-    { 0x00CD, 0,    "Iacute" },
-    { 0xF7ED, 0,    "Iacutesmall" },
-    { 0x012C, 0,    "Ibreve" },
-    { 0x00CE, 0,    "Icircumflex" },
-    { 0xF7EE, 0,    "Icircumflexsmall" },
-    { 0x00CF, 0,    "Idieresis" },
-    { 0xF7EF, 0,    "Idieresissmall" },
-    { 0x0130, 0,    "Idotaccent" },
-    { 0x2111, 0,    "Ifraktur" },
-    { 0x00CC, 0,    "Igrave" },
-    { 0xF7EC, 0,    "Igravesmall" },
-    { 0x012A, 0,    "Imacron" },
-    { 0x012E, 0,    "Iogonek" },
-    { 0x0399, 0,    "Iota" },
-    { 0x03AA, 0,    "Iotadieresis" },
-    { 0x038A, 0,    "Iotatonos" },
-    { 0xF769, 0,    "Ismall" },
-    { 0x0128, 0,    "Itilde" },
-    { 0x004A, 0112, "J" },
-    { 0x0134, 0,    "Jcircumflex" },
-    { 0xF76A, 0,    "Jsmall" },
-    { 0x004B, 0113, "K" },
-    { 0x039A, 0,    "Kappa" },
-    { 0x0136, 0,    "Kcommaaccent" },
-    { 0xF76B, 0,    "Ksmall" },
-    { 0x004C, 0114, "L" },
-    { 0xF6BF, 0,    "LL" },
-    { 0x0139, 0,    "Lacute" },
-    { 0x039B, 0,    "Lambda" },
-    { 0x013D, 0,    "Lcaron" },
-    { 0x013B, 0,    "Lcommaaccent" },
-    { 0x013F, 0,    "Ldot" },
-    { 0x0141, 0350, "Lslash" },
-    { 0xF6F9, 0,    "Lslashsmall" },
-    { 0xF76C, 0,    "Lsmall" },
-    { 0x004D, 0115, "M" },
-    { 0xF6D0, 0,    "Macron" },
-    { 0xF7AF, 0,    "Macronsmall" },
-    { 0xF76D, 0,    "Msmall" },
-    { 0x039C, 0,    "Mu" },
-    { 0x004E, 0116, "N" },
-    { 0x0143, 0,    "Nacute" },
-    { 0x0147, 0,    "Ncaron" },
-    { 0x0145, 0,    "Ncommaaccent" },
-    { 0xF76E, 0,    "Nsmall" },
-    { 0x00D1, 0,    "Ntilde" },
-    { 0xF7F1, 0,    "Ntildesmall" },
-    { 0x039D, 0,    "Nu" },
-    { 0x004F, 0117, "O" },
-    { 0x0152, 0,    "OE" },
-    { 0xF6FA, 0,    "OEsmall" },
-    { 0x00D3, 0,    "Oacute" },
-    { 0xF7F3, 0,    "Oacutesmall" },
-    { 0x014E, 0,    "Obreve" },
-    { 0x00D4, 0,    "Ocircumflex" },
-    { 0xF7F4, 0,    "Ocircumflexsmall" },
-    { 0x00D6, 0,    "Odieresis" },
-    { 0xF7F6, 0,    "Odieresissmall" },
-    { 0xF6FB, 0,    "Ogoneksmall" },
-    { 0x00D2, 0,    "Ograve" },
-    { 0xF7F2, 0,    "Ogravesmall" },
-    { 0x01A0, 0,    "Ohorn" },
-    { 0x0150, 0,    "Ohungarumlaut" },
-    { 0x014C, 0,    "Omacron" },
-    { 0x2126, 0,    "Omega" },
-    { 0x03A9, 0,    "Omega" },
-    { 0x038F, 0,    "Omegatonos" },
-    { 0x039F, 0,    "Omicron" },
-    { 0x038C, 0,    "Omicrontonos" },
-    { 0x00D8, 0351, "Oslash" },
-    { 0x01FE, 0,    "Oslashacute" },
-    { 0xF7F8, 0,    "Oslashsmall" },
-    { 0xF76F, 0,    "Osmall" },
-    { 0x00D5, 0,    "Otilde" },
-    { 0xF7F5, 0,    "Otildesmall" },
-    { 0x0050, 0120, "P" },
-    { 0x03A6, 0,    "Phi" },
-    { 0x03A0, 0,    "Pi" },
-    { 0x03A8, 0,    "Psi" },
-    { 0xF770, 0,    "Psmall" },
-    { 0x0051, 0121, "Q" },
-    { 0xF771, 0,    "Qsmall" },
-    { 0x0052, 0122, "R" },
-    { 0x0154, 0,    "Racute" },
-    { 0x0158, 0,    "Rcaron" },
-    { 0x0156, 0,    "Rcommaaccent" },
-    { 0x211C, 0,    "Rfraktur" },
-    { 0x03A1, 0,    "Rho" },
-    { 0xF6FC, 0,    "Ringsmall" },
-    { 0xF772, 0,    "Rsmall" },
-    { 0x0053, 0123, "S" },
-    { 0x250C, 0,    "SF010000" },
-    { 0x2514, 0,    "SF020000" },
-    { 0x2510, 0,    "SF030000" },
-    { 0x2518, 0,    "SF040000" },
-    { 0x253C, 0,    "SF050000" },
-    { 0x252C, 0,    "SF060000" },
-    { 0x2534, 0,    "SF070000" },
-    { 0x251C, 0,    "SF080000" },
-    { 0x2524, 0,    "SF090000" },
-    { 0x2500, 0,    "SF100000" },
-    { 0x2502, 0,    "SF110000" },
-    { 0x2561, 0,    "SF190000" },
-    { 0x2562, 0,    "SF200000" },
-    { 0x2556, 0,    "SF210000" },
-    { 0x2555, 0,    "SF220000" },
-    { 0x2563, 0,    "SF230000" },
-    { 0x2551, 0,    "SF240000" },
-    { 0x2557, 0,    "SF250000" },
-    { 0x255D, 0,    "SF260000" },
-    { 0x255C, 0,    "SF270000" },
-    { 0x255B, 0,    "SF280000" },
-    { 0x255E, 0,    "SF360000" },
-    { 0x255F, 0,    "SF370000" },
-    { 0x255A, 0,    "SF380000" },
-    { 0x2554, 0,    "SF390000" },
-    { 0x2569, 0,    "SF400000" },
-    { 0x2566, 0,    "SF410000" },
-    { 0x2560, 0,    "SF420000" },
-    { 0x2550, 0,    "SF430000" },
-    { 0x256C, 0,    "SF440000" },
-    { 0x2567, 0,    "SF450000" },
-    { 0x2568, 0,    "SF460000" },
-    { 0x2564, 0,    "SF470000" },
-    { 0x2565, 0,    "SF480000" },
-    { 0x2559, 0,    "SF490000" },
-    { 0x2558, 0,    "SF500000" },
-    { 0x2552, 0,    "SF510000" },
-    { 0x2553, 0,    "SF520000" },
-    { 0x256B, 0,    "SF530000" },
-    { 0x256A, 0,    "SF540000" },
-    { 0x015A, 0,    "Sacute" },
-    { 0x0160, 0,    "Scaron" },
-    { 0xF6FD, 0,    "Scaronsmall" },
-    { 0x015E, 0,    "Scedilla" },
-    { 0xF6C1, 0,    "Scedilla" },
-    { 0x015C, 0,    "Scircumflex" },
-    { 0x0218, 0,    "Scommaaccent" },
-    { 0x03A3, 0,    "Sigma" },
-    { 0xF773, 0,    "Ssmall" },
-    { 0x0054, 0124, "T" },
-    { 0x03A4, 0,    "Tau" },
-    { 0x0166, 0,    "Tbar" },
-    { 0x0164, 0,    "Tcaron" },
-    { 0x0162, 0,    "Tcommaaccent" },
-    { 0x021A, 0,    "Tcommaaccent" },
-    { 0x0398, 0,    "Theta" },
-    { 0x00DE, 0,    "Thorn" },
-    { 0xF7FE, 0,    "Thornsmall" },
-    { 0xF6FE, 0,    "Tildesmall" },
-    { 0xF774, 0,    "Tsmall" },
-    { 0x0055, 0125, "U" },
-    { 0x00DA, 0,    "Uacute" },
-    { 0xF7FA, 0,    "Uacutesmall" },
-    { 0x016C, 0,    "Ubreve" },
-    { 0x00DB, 0,    "Ucircumflex" },
-    { 0xF7FB, 0,    "Ucircumflexsmall" },
-    { 0x00DC, 0,    "Udieresis" },
-    { 0xF7FC, 0,    "Udieresissmall" },
-    { 0x00D9, 0,    "Ugrave" },
-    { 0xF7F9, 0,    "Ugravesmall" },
-    { 0x01AF, 0,    "Uhorn" },
-    { 0x0170, 0,    "Uhungarumlaut" },
-    { 0x016A, 0,    "Umacron" },
-    { 0x0172, 0,    "Uogonek" },
-    { 0x03A5, 0,    "Upsilon" },
-    { 0x03D2, 0,    "Upsilon1" },
-    { 0x03AB, 0,    "Upsilondieresis" },
-    { 0x038E, 0,    "Upsilontonos" },
-    { 0x016E, 0,    "Uring" },
-    { 0xF775, 0,    "Usmall" },
-    { 0x0168, 0,    "Utilde" },
-    { 0x0056, 0126, "V" },
-    { 0xF776, 0,    "Vsmall" },
-    { 0x0057, 0127, "W" },
-    { 0x1E82, 0,    "Wacute" },
-    { 0x0174, 0,    "Wcircumflex" },
-    { 0x1E84, 0,    "Wdieresis" },
-    { 0x1E80, 0,    "Wgrave" },
-    { 0xF777, 0,    "Wsmall" },
-    { 0x0058, 0130, "X" },
-    { 0x039E, 0,    "Xi" },
-    { 0xF778, 0,    "Xsmall" },
-    { 0x0059, 0131, "Y" },
-    { 0x00DD, 0,    "Yacute" },
-    { 0xF7FD, 0,    "Yacutesmall" },
-    { 0x0176, 0,    "Ycircumflex" },
-    { 0x0178, 0,    "Ydieresis" },
-    { 0xF7FF, 0,    "Ydieresissmall" },
-    { 0x1EF2, 0,    "Ygrave" },
-    { 0xF779, 0,    "Ysmall" },
-    { 0x005A, 0132, "Z" },
-    { 0x0179, 0,    "Zacute" },
-    { 0x017D, 0,    "Zcaron" },
-    { 0xF6FF, 0,    "Zcaronsmall" },
-    { 0x017B, 0,    "Zdotaccent" },
-    { 0x0396, 0,    "Zeta" },
-    { 0xF77A, 0,    "Zsmall" },
-    { 0x0061, 0141, "a" },
-    { 0x00E1, 0,    "aacute" },
-    { 0x0103, 0,    "abreve" },
-    { 0x00E2, 0,    "acircumflex" },
-    { 0x00B4, 0302, "acute" },
-    { 0x0301, 0,    "acutecomb" },
-    { 0x00E4, 0,    "adieresis" },
-    { 0x00E6, 0361, "ae" },
-    { 0x01FD, 0,    "aeacute" },
-    { 0x2015, 0,    "afii00208" },
-    { 0x0410, 0,    "afii10017" },
-    { 0x0411, 0,    "afii10018" },
-    { 0x0412, 0,    "afii10019" },
-    { 0x0413, 0,    "afii10020" },
-    { 0x0414, 0,    "afii10021" },
-    { 0x0415, 0,    "afii10022" },
-    { 0x0401, 0,    "afii10023" },
-    { 0x0416, 0,    "afii10024" },
-    { 0x0417, 0,    "afii10025" },
-    { 0x0418, 0,    "afii10026" },
-    { 0x0419, 0,    "afii10027" },
-    { 0x041A, 0,    "afii10028" },
-    { 0x041B, 0,    "afii10029" },
-    { 0x041C, 0,    "afii10030" },
-    { 0x041D, 0,    "afii10031" },
-    { 0x041E, 0,    "afii10032" },
-    { 0x041F, 0,    "afii10033" },
-    { 0x0420, 0,    "afii10034" },
-    { 0x0421, 0,    "afii10035" },
-    { 0x0422, 0,    "afii10036" },
-    { 0x0423, 0,    "afii10037" },
-    { 0x0424, 0,    "afii10038" },
-    { 0x0425, 0,    "afii10039" },
-    { 0x0426, 0,    "afii10040" },
-    { 0x0427, 0,    "afii10041" },
-    { 0x0428, 0,    "afii10042" },
-    { 0x0429, 0,    "afii10043" },
-    { 0x042A, 0,    "afii10044" },
-    { 0x042B, 0,    "afii10045" },
-    { 0x042C, 0,    "afii10046" },
-    { 0x042D, 0,    "afii10047" },
-    { 0x042E, 0,    "afii10048" },
-    { 0x042F, 0,    "afii10049" },
-    { 0x0490, 0,    "afii10050" },
-    { 0x0402, 0,    "afii10051" },
-    { 0x0403, 0,    "afii10052" },
-    { 0x0404, 0,    "afii10053" },
-    { 0x0405, 0,    "afii10054" },
-    { 0x0406, 0,    "afii10055" },
-    { 0x0407, 0,    "afii10056" },
-    { 0x0408, 0,    "afii10057" },
-    { 0x0409, 0,    "afii10058" },
-    { 0x040A, 0,    "afii10059" },
-    { 0x040B, 0,    "afii10060" },
-    { 0x040C, 0,    "afii10061" },
-    { 0x040E, 0,    "afii10062" },
-    { 0xF6C4, 0,    "afii10063" },
-    { 0xF6C5, 0,    "afii10064" },
-    { 0x0430, 0,    "afii10065" },
-    { 0x0431, 0,    "afii10066" },
-    { 0x0432, 0,    "afii10067" },
-    { 0x0433, 0,    "afii10068" },
-    { 0x0434, 0,    "afii10069" },
-    { 0x0435, 0,    "afii10070" },
-    { 0x0451, 0,    "afii10071" },
-    { 0x0436, 0,    "afii10072" },
-    { 0x0437, 0,    "afii10073" },
-    { 0x0438, 0,    "afii10074" },
-    { 0x0439, 0,    "afii10075" },
-    { 0x043A, 0,    "afii10076" },
-    { 0x043B, 0,    "afii10077" },
-    { 0x043C, 0,    "afii10078" },
-    { 0x043D, 0,    "afii10079" },
-    { 0x043E, 0,    "afii10080" },
-    { 0x043F, 0,    "afii10081" },
-    { 0x0440, 0,    "afii10082" },
-    { 0x0441, 0,    "afii10083" },
-    { 0x0442, 0,    "afii10084" },
-    { 0x0443, 0,    "afii10085" },
-    { 0x0444, 0,    "afii10086" },
-    { 0x0445, 0,    "afii10087" },
-    { 0x0446, 0,    "afii10088" },
-    { 0x0447, 0,    "afii10089" },
-    { 0x0448, 0,    "afii10090" },
-    { 0x0449, 0,    "afii10091" },
-    { 0x044A, 0,    "afii10092" },
-    { 0x044B, 0,    "afii10093" },
-    { 0x044C, 0,    "afii10094" },
-    { 0x044D, 0,    "afii10095" },
-    { 0x044E, 0,    "afii10096" },
-    { 0x044F, 0,    "afii10097" },
-    { 0x0491, 0,    "afii10098" },
-    { 0x0452, 0,    "afii10099" },
-    { 0x0453, 0,    "afii10100" },
-    { 0x0454, 0,    "afii10101" },
-    { 0x0455, 0,    "afii10102" },
-    { 0x0456, 0,    "afii10103" },
-    { 0x0457, 0,    "afii10104" },
-    { 0x0458, 0,    "afii10105" },
-    { 0x0459, 0,    "afii10106" },
-    { 0x045A, 0,    "afii10107" },
-    { 0x045B, 0,    "afii10108" },
-    { 0x045C, 0,    "afii10109" },
-    { 0x045E, 0,    "afii10110" },
-    { 0x040F, 0,    "afii10145" },
-    { 0x0462, 0,    "afii10146" },
-    { 0x0472, 0,    "afii10147" },
-    { 0x0474, 0,    "afii10148" },
-    { 0xF6C6, 0,    "afii10192" },
-    { 0x045F, 0,    "afii10193" },
-    { 0x0463, 0,    "afii10194" },
-    { 0x0473, 0,    "afii10195" },
-    { 0x0475, 0,    "afii10196" },
-    { 0xF6C7, 0,    "afii10831" },
-    { 0xF6C8, 0,    "afii10832" },
-    { 0x04D9, 0,    "afii10846" },
-    { 0x200E, 0,    "afii299" },
-    { 0x200F, 0,    "afii300" },
-    { 0x200D, 0,    "afii301" },
-    { 0x066A, 0,    "afii57381" },
-    { 0x060C, 0,    "afii57388" },
-    { 0x0660, 0,    "afii57392" },
-    { 0x0661, 0,    "afii57393" },
-    { 0x0662, 0,    "afii57394" },
-    { 0x0663, 0,    "afii57395" },
-    { 0x0664, 0,    "afii57396" },
-    { 0x0665, 0,    "afii57397" },
-    { 0x0666, 0,    "afii57398" },
-    { 0x0667, 0,    "afii57399" },
-    { 0x0668, 0,    "afii57400" },
-    { 0x0669, 0,    "afii57401" },
-    { 0x061B, 0,    "afii57403" },
-    { 0x061F, 0,    "afii57407" },
-    { 0x0621, 0,    "afii57409" },
-    { 0x0622, 0,    "afii57410" },
-    { 0x0623, 0,    "afii57411" },
-    { 0x0624, 0,    "afii57412" },
-    { 0x0625, 0,    "afii57413" },
-    { 0x0626, 0,    "afii57414" },
-    { 0x0627, 0,    "afii57415" },
-    { 0x0628, 0,    "afii57416" },
-    { 0x0629, 0,    "afii57417" },
-    { 0x062A, 0,    "afii57418" },
-    { 0x062B, 0,    "afii57419" },
-    { 0x062C, 0,    "afii57420" },
-    { 0x062D, 0,    "afii57421" },
-    { 0x062E, 0,    "afii57422" },
-    { 0x062F, 0,    "afii57423" },
-    { 0x0630, 0,    "afii57424" },
-    { 0x0631, 0,    "afii57425" },
-    { 0x0632, 0,    "afii57426" },
-    { 0x0633, 0,    "afii57427" },
-    { 0x0634, 0,    "afii57428" },
-    { 0x0635, 0,    "afii57429" },
-    { 0x0636, 0,    "afii57430" },
-    { 0x0637, 0,    "afii57431" },
-    { 0x0638, 0,    "afii57432" },
-    { 0x0639, 0,    "afii57433" },
-    { 0x063A, 0,    "afii57434" },
-    { 0x0640, 0,    "afii57440" },
-    { 0x0641, 0,    "afii57441" },
-    { 0x0642, 0,    "afii57442" },
-    { 0x0643, 0,    "afii57443" },
-    { 0x0644, 0,    "afii57444" },
-    { 0x0645, 0,    "afii57445" },
-    { 0x0646, 0,    "afii57446" },
-    { 0x0648, 0,    "afii57448" },
-    { 0x0649, 0,    "afii57449" },
-    { 0x064A, 0,    "afii57450" },
-    { 0x064B, 0,    "afii57451" },
-    { 0x064C, 0,    "afii57452" },
-    { 0x064D, 0,    "afii57453" },
-    { 0x064E, 0,    "afii57454" },
-    { 0x064F, 0,    "afii57455" },
-    { 0x0650, 0,    "afii57456" },
-    { 0x0651, 0,    "afii57457" },
-    { 0x0652, 0,    "afii57458" },
-    { 0x0647, 0,    "afii57470" },
-    { 0x06A4, 0,    "afii57505" },
-    { 0x067E, 0,    "afii57506" },
-    { 0x0686, 0,    "afii57507" },
-    { 0x0698, 0,    "afii57508" },
-    { 0x06AF, 0,    "afii57509" },
-    { 0x0679, 0,    "afii57511" },
-    { 0x0688, 0,    "afii57512" },
-    { 0x0691, 0,    "afii57513" },
-    { 0x06BA, 0,    "afii57514" },
-    { 0x06D2, 0,    "afii57519" },
-    { 0x06D5, 0,    "afii57534" },
-    { 0x20AA, 0,    "afii57636" },
-    { 0x05BE, 0,    "afii57645" },
-    { 0x05C3, 0,    "afii57658" },
-    { 0x05D0, 0,    "afii57664" },
-    { 0x05D1, 0,    "afii57665" },
-    { 0x05D2, 0,    "afii57666" },
-    { 0x05D3, 0,    "afii57667" },
-    { 0x05D4, 0,    "afii57668" },
-    { 0x05D5, 0,    "afii57669" },
-    { 0x05D6, 0,    "afii57670" },
-    { 0x05D7, 0,    "afii57671" },
-    { 0x05D8, 0,    "afii57672" },
-    { 0x05D9, 0,    "afii57673" },
-    { 0x05DA, 0,    "afii57674" },
-    { 0x05DB, 0,    "afii57675" },
-    { 0x05DC, 0,    "afii57676" },
-    { 0x05DD, 0,    "afii57677" },
-    { 0x05DE, 0,    "afii57678" },
-    { 0x05DF, 0,    "afii57679" },
-    { 0x05E0, 0,    "afii57680" },
-    { 0x05E1, 0,    "afii57681" },
-    { 0x05E2, 0,    "afii57682" },
-    { 0x05E3, 0,    "afii57683" },
-    { 0x05E4, 0,    "afii57684" },
-    { 0x05E5, 0,    "afii57685" },
-    { 0x05E6, 0,    "afii57686" },
-    { 0x05E7, 0,    "afii57687" },
-    { 0x05E8, 0,    "afii57688" },
-    { 0x05E9, 0,    "afii57689" },
-    { 0x05EA, 0,    "afii57690" },
-    { 0xFB2A, 0,    "afii57694" },
-    { 0xFB2B, 0,    "afii57695" },
-    { 0xFB4B, 0,    "afii57700" },
-    { 0xFB1F, 0,    "afii57705" },
-    { 0x05F0, 0,    "afii57716" },
-    { 0x05F1, 0,    "afii57717" },
-    { 0x05F2, 0,    "afii57718" },
-    { 0xFB35, 0,    "afii57723" },
-    { 0x05B4, 0,    "afii57793" },
-    { 0x05B5, 0,    "afii57794" },
-    { 0x05B6, 0,    "afii57795" },
-    { 0x05BB, 0,    "afii57796" },
-    { 0x05B8, 0,    "afii57797" },
-    { 0x05B7, 0,    "afii57798" },
-    { 0x05B0, 0,    "afii57799" },
-    { 0x05B2, 0,    "afii57800" },
-    { 0x05B1, 0,    "afii57801" },
-    { 0x05B3, 0,    "afii57802" },
-    { 0x05C2, 0,    "afii57803" },
-    { 0x05C1, 0,    "afii57804" },
-    { 0x05B9, 0,    "afii57806" },
-    { 0x05BC, 0,    "afii57807" },
-    { 0x05BD, 0,    "afii57839" },
-    { 0x05BF, 0,    "afii57841" },
-    { 0x05C0, 0,    "afii57842" },
-    { 0x02BC, 0,    "afii57929" },
-    { 0x2105, 0,    "afii61248" },
-    { 0x2113, 0,    "afii61289" },
-    { 0x2116, 0,    "afii61352" },
-    { 0x202C, 0,    "afii61573" },
-    { 0x202D, 0,    "afii61574" },
-    { 0x202E, 0,    "afii61575" },
-    { 0x200C, 0,    "afii61664" },
-    { 0x066D, 0,    "afii63167" },
-    { 0x02BD, 0,    "afii64937" },
-    { 0x00E0, 0,    "agrave" },
-    { 0x2135, 0,    "aleph" },
-    { 0x03B1, 0,    "alpha" },
-    { 0x03AC, 0,    "alphatonos" },
-    { 0x0101, 0,    "amacron" },
-    { 0x0026, 046,  "ampersand" },
-    { 0xF726, 0,    "ampersandsmall" },
-    { 0x2220, 0,    "angle" },
-    { 0x2329, 0,    "angleleft" },
-    { 0x232A, 0,    "angleright" },
-    { 0x0387, 0,    "anoteleia" },
-    { 0x0105, 0,    "aogonek" },
-    { 0x2248, 0,    "approxequal" },
-    { 0x00E5, 0,    "aring" },
-    { 0x01FB, 0,    "aringacute" },
-    { 0x2194, 0,    "arrowboth" },
-    { 0x21D4, 0,    "arrowdblboth" },
-    { 0x21D3, 0,    "arrowdbldown" },
-    { 0x21D0, 0,    "arrowdblleft" },
-    { 0x21D2, 0,    "arrowdblright" },
-    { 0x21D1, 0,    "arrowdblup" },
-    { 0x2193, 0,    "arrowdown" },
-    { 0xF8E7, 0,    "arrowhorizex" },
-    { 0x2190, 0,    "arrowleft" },
-    { 0x2192, 0,    "arrowright" },
-    { 0x2191, 0,    "arrowup" },
-    { 0x2195, 0,    "arrowupdn" },
-    { 0x21A8, 0,    "arrowupdnbse" },
-    { 0xF8E6, 0,    "arrowvertex" },
-    { 0x005E, 0136, "asciicircum" },
-    { 0x007E, 0176, "asciitilde" },
-    { 0x002A, 052,  "asterisk" },
-    { 0x2217, 0,    "asteriskmath" },
-    { 0xF6E9, 0,    "asuperior" },
-    { 0x0040, 0100, "at" },
-    { 0x00E3, 0,    "atilde" },
-    { 0x0062, 0142, "b" },
-    { 0x005C, 0134, "backslash" },
-    { 0x007C, 0174, "bar" },
-    { 0x03B2, 0,    "beta" },
-    { 0x2588, 0,    "block" },
-    { 0xF8F4, 0,    "braceex" },
-    { 0x007B, 0173, "braceleft" },
-    { 0xF8F3, 0,    "braceleftbt" },
-    { 0xF8F2, 0,    "braceleftmid" },
-    { 0xF8F1, 0,    "bracelefttp" },
-    { 0x007D, 0175, "braceright" },
-    { 0xF8FE, 0,    "bracerightbt" },
-    { 0xF8FD, 0,    "bracerightmid" },
-    { 0xF8FC, 0,    "bracerighttp" },
-    { 0x005B, 0133, "bracketleft" },
-    { 0xF8F0, 0,    "bracketleftbt" },
-    { 0xF8EF, 0,    "bracketleftex" },
-    { 0xF8EE, 0,    "bracketlefttp" },
-    { 0x005D, 0135, "bracketright" },
-    { 0xF8FB, 0,    "bracketrightbt" },
-    { 0xF8FA, 0,    "bracketrightex" },
-    { 0xF8F9, 0,    "bracketrighttp" },
-    { 0x02D8, 0306, "breve" },
-    { 0x00A6, 0,    "brokenbar" },
-    { 0xF6EA, 0,    "bsuperior" },
-    { 0x2022, 0267, "bullet" },
-    { 0x0063, 0143, "c" },
-    { 0x0107, 0,    "cacute" },
-    { 0x02C7, 0317, "caron" },
-    { 0x21B5, 0,    "carriagereturn" },
-    { 0x010D, 0,    "ccaron" },
-    { 0x00E7, 0,    "ccedilla" },
-    { 0x0109, 0,    "ccircumflex" },
-    { 0x010B, 0,    "cdotaccent" },
-    { 0x00B8, 0313, "cedilla" },
-    { 0x00A2, 0242, "cent" },
-    { 0xF6DF, 0,    "centinferior" },
-    { 0xF7A2, 0,    "centoldstyle" },
-    { 0xF6E0, 0,    "centsuperior" },
-    { 0x03C7, 0,    "chi" },
-    { 0x25CB, 0,    "circle" },
-    { 0x2297, 0,    "circlemultiply" },
-    { 0x2295, 0,    "circleplus" },
-    { 0x02C6, 0303, "circumflex" },
-    { 0x2663, 0,    "club" },
-    { 0x003A, 072,  "colon" },
-    { 0x20A1, 0,    "colonmonetary" },
-    { 0x002C, 054,  "comma" },
-    { 0xF6C3, 0,    "commaaccent" },
-    { 0xF6E1, 0,    "commainferior" },
-    { 0xF6E2, 0,    "commasuperior" },
-    { 0x2245, 0,    "congruent" },
-    { 0x00A9, 0,    "copyright" },
-    { 0xF8E9, 0,    "copyrightsans" },
-    { 0xF6D9, 0,    "copyrightserif" },
-    { 0x00A4, 0250, "currency" },
-    { 0xF6D1, 0,    "cyrBreve" },
-    { 0xF6D2, 0,    "cyrFlex" },
-    { 0xF6D4, 0,    "cyrbreve" },
-    { 0xF6D5, 0,    "cyrflex" },
-    { 0x0064, 0144, "d" },
-    { 0x2020, 0262, "dagger" },
-    { 0x2021, 0263, "daggerdbl" },
-    { 0xF6D3, 0,    "dblGrave" },
-    { 0xF6D6, 0,    "dblgrave" },
-    { 0x010F, 0,    "dcaron" },
-    { 0x0111, 0,    "dcroat" },
-    { 0x00B0, 0,    "degree" },
-    { 0x03B4, 0,    "delta" },
-    { 0x2666, 0,    "diamond" },
-    { 0x00A8, 0310, "dieresis" },
-    { 0xF6D7, 0,    "dieresisacute" },
-    { 0xF6D8, 0,    "dieresisgrave" },
-    { 0x0385, 0,    "dieresistonos" },
-    { 0x00F7, 0,    "divide" },
-    { 0x2593, 0,    "dkshade" },
-    { 0x2584, 0,    "dnblock" },
-    { 0x0024, 044,  "dollar" },
-    { 0xF6E3, 0,    "dollarinferior" },
-    { 0xF724, 0,    "dollaroldstyle" },
-    { 0xF6E4, 0,    "dollarsuperior" },
-    { 0x20AB, 0,    "dong" },
-    { 0x02D9, 0307, "dotaccent" },
-    { 0x0323, 0,    "dotbelowcomb" },
-    { 0x0131, 0365, "dotlessi" },
-    { 0xF6BE, 0,    "dotlessj" },
-    { 0x22C5, 0,    "dotmath" },
-    { 0xF6EB, 0,    "dsuperior" },
-    { 0x0065, 0145, "e" },
-    { 0x00E9, 0,    "eacute" },
-    { 0x0115, 0,    "ebreve" },
-    { 0x011B, 0,    "ecaron" },
-    { 0x00EA, 0,    "ecircumflex" },
-    { 0x00EB, 0,    "edieresis" },
-    { 0x0117, 0,    "edotaccent" },
-    { 0x00E8, 0,    "egrave" },
-    { 0x0038, 070,  "eight" },
-    { 0x2088, 0,    "eightinferior" },
-    { 0xF738, 0,    "eightoldstyle" },
-    { 0x2078, 0,    "eightsuperior" },
-    { 0x2208, 0,    "element" },
-    { 0x2026, 0274, "ellipsis" },
-    { 0x0113, 0,    "emacron" },
-    { 0x2014, 0320, "emdash" },
-    { 0x2205, 0,    "emptyset" },
-    { 0x2013, 0261, "endash" },
-    { 0x014B, 0,    "eng" },
-    { 0x0119, 0,    "eogonek" },
-    { 0x03B5, 0,    "epsilon" },
-    { 0x03AD, 0,    "epsilontonos" },
-    { 0x003D, 075,  "equal" },
-    { 0x2261, 0,    "equivalence" },
-    { 0x212E, 0,    "estimated" },
-    { 0xF6EC, 0,    "esuperior" },
-    { 0x03B7, 0,    "eta" },
-    { 0x03AE, 0,    "etatonos" },
-    { 0x00F0, 0,    "eth" },
-    { 0x0021, 041,  "exclam" },
-    { 0x203C, 0,    "exclamdbl" },
-    { 0x00A1, 0241, "exclamdown" },
-    { 0xF7A1, 0,    "exclamdownsmall" },
-    { 0xF721, 0,    "exclamsmall" },
-    { 0x2203, 0,    "existential" },
-    { 0x0066, 0146, "f" },
-    { 0x2640, 0,    "female" },
-    { 0xFB00, 0,    "ff" },
-    { 0xFB03, 0,    "ffi" },
-    { 0xFB04, 0,    "ffl" },
-    { 0xFB01, 0256, "fi" },
-    { 0x2012, 0,    "figuredash" },
-    { 0x25A0, 0,    "filledbox" },
-    { 0x25AC, 0,    "filledrect" },
-    { 0x0035, 065,  "five" },
-    { 0x215D, 0,    "fiveeighths" },
-    { 0x2085, 0,    "fiveinferior" },
-    { 0xF735, 0,    "fiveoldstyle" },
-    { 0x2075, 0,    "fivesuperior" },
-    { 0xFB02, 0257, "fl" },
-    { 0x0192, 0246, "florin" },
-    { 0x0034, 064,  "four" },
-    { 0x2084, 0,    "fourinferior" },
-    { 0xF734, 0,    "fouroldstyle" },
-    { 0x2074, 0,    "foursuperior" },
-    { 0x2044, 0244, "fraction" },
-    { 0x2215, 0244, "fraction" },
-    { 0x20A3, 0,    "franc" },
-    { 0x0067, 0147, "g" },
-    { 0x03B3, 0,    "gamma" },
-    { 0x011F, 0,    "gbreve" },
-    { 0x01E7, 0,    "gcaron" },
-    { 0x011D, 0,    "gcircumflex" },
-    { 0x0123, 0,    "gcommaaccent" },
-    { 0x0121, 0,    "gdotaccent" },
-    { 0x00DF, 0373, "germandbls" },
-    { 0x2207, 0,    "gradient" },
-    { 0x0060, 0301, "grave" },
-    { 0x0300, 0,    "gravecomb" },
-    { 0x003E, 076,  "greater" },
-    { 0x2265, 0,    "greaterequal" },
-    { 0x00AB, 0253, "guillemotleft" },
-    { 0x00BB, 0273, "guillemotright" },
-    { 0x2039, 0254, "guilsinglleft" },
-    { 0x203A, 0255, "guilsinglright" },
-    { 0x0068, 0150, "h" },
-    { 0x0127, 0,    "hbar" },
-    { 0x0125, 0,    "hcircumflex" },
-    { 0x2665, 0,    "heart" },
-    { 0x0309, 0,    "hookabovecomb" },
-    { 0x2302, 0,    "house" },
-    { 0x02DD, 0315, "hungarumlaut" },
-    { 0x002D, 055,  "hyphen" },
-    { 0x00AD, 0,    "hyphen" },
-    { 0xF6E5, 0,    "hypheninferior" },
-    { 0xF6E6, 0,    "hyphensuperior" },
-    { 0x0069, 0151, "i" },
-    { 0x00ED, 0,    "iacute" },
-    { 0x012D, 0,    "ibreve" },
-    { 0x00EE, 0,    "icircumflex" },
-    { 0x00EF, 0,    "idieresis" },
-    { 0x00EC, 0,    "igrave" },
-    { 0x0133, 0,    "ij" },
-    { 0x012B, 0,    "imacron" },
-    { 0x221E, 0,    "infinity" },
-    { 0x222B, 0,    "integral" },
-    { 0x2321, 0,    "integralbt" },
-    { 0xF8F5, 0,    "integralex" },
-    { 0x2320, 0,    "integraltp" },
-    { 0x2229, 0,    "intersection" },
-    { 0x25D8, 0,    "invbullet" },
-    { 0x25D9, 0,    "invcircle" },
-    { 0x263B, 0,    "invsmileface" },
-    { 0x012F, 0,    "iogonek" },
-    { 0x03B9, 0,    "iota" },
-    { 0x03CA, 0,    "iotadieresis" },
-    { 0x0390, 0,    "iotadieresistonos" },
-    { 0x03AF, 0,    "iotatonos" },
-    { 0xF6ED, 0,    "isuperior" },
-    { 0x0129, 0,    "itilde" },
-    { 0x006A, 0152, "j" },
-    { 0x0135, 0,    "jcircumflex" },
-    { 0x006B, 0153, "k" },
-    { 0x03BA, 0,    "kappa" },
-    { 0x0137, 0,    "kcommaaccent" },
-    { 0x0138, 0,    "kgreenlandic" },
-    { 0x006C, 0154, "l" },
-    { 0x013A, 0,    "lacute" },
-    { 0x03BB, 0,    "lambda" },
-    { 0x013E, 0,    "lcaron" },
-    { 0x013C, 0,    "lcommaaccent" },
-    { 0x0140, 0,    "ldot" },
-    { 0x003C, 074,  "less" },
-    { 0x2264, 0,    "lessequal" },
-    { 0x258C, 0,    "lfblock" },
-    { 0x20A4, 0,    "lira" },
-    { 0xF6C0, 0,    "ll" },
-    { 0x2227, 0,    "logicaland" },
-    { 0x00AC, 0,    "logicalnot" },
-    { 0x2228, 0,    "logicalor" },
-    { 0x017F, 0,    "longs" },
-    { 0x25CA, 0,    "lozenge" },
-    { 0x0142, 0370, "lslash" },
-    { 0xF6EE, 0,    "lsuperior" },
-    { 0x2591, 0,    "ltshade" },
-    { 0x006D, 0155, "m" },
-    { 0x00AF, 0305, "macron" },
-    { 0x02C9, 0305, "macron" },
-    { 0x2642, 0,    "male" },
-    { 0x2212, 0,    "minus" },
-    { 0x2032, 0,    "minute" },
-    { 0xF6EF, 0,    "msuperior" },
-    { 0x00B5, 0,    "mu" },
-    { 0x03BC, 0,    "mu" },
-    { 0x00D7, 0,    "multiply" },
-    { 0x266A, 0,    "musicalnote" },
-    { 0x266B, 0,    "musicalnotedbl" },
-    { 0x006E, 0156, "n" },
-    { 0x0144, 0,    "nacute" },
-    { 0x0149, 0,    "napostrophe" },
-    { 0x0148, 0,    "ncaron" },
-    { 0x0146, 0,    "ncommaaccent" },
-    { 0x0039, 071,  "nine" },
-    { 0x2089, 0,    "nineinferior" },
-    { 0xF739, 0,    "nineoldstyle" },
-    { 0x2079, 0,    "ninesuperior" },
-    { 0x2209, 0,    "notelement" },
-    { 0x2260, 0,    "notequal" },
-    { 0x2284, 0,    "notsubset" },
-    { 0x207F, 0,    "nsuperior" },
-    { 0x00F1, 0,    "ntilde" },
-    { 0x03BD, 0,    "nu" },
-    { 0x0023, 043,  "numbersign" },
-    { 0x006F, 0157, "o" },
-    { 0x00F3, 0,    "oacute" },
-    { 0x014F, 0,    "obreve" },
-    { 0x00F4, 0,    "ocircumflex" },
-    { 0x00F6, 0,    "odieresis" },
-    { 0x0153, 0372, "oe" },
-    { 0x02DB, 0316, "ogonek" },
-    { 0x00F2, 0,    "ograve" },
-    { 0x01A1, 0,    "ohorn" },
-    { 0x0151, 0,    "ohungarumlaut" },
-    { 0x014D, 0,    "omacron" },
-    { 0x03C9, 0,    "omega" },
-    { 0x03D6, 0,    "omega1" },
-    { 0x03CE, 0,    "omegatonos" },
-    { 0x03BF, 0,    "omicron" },
-    { 0x03CC, 0,    "omicrontonos" },
-    { 0x0031, 061,  "one" },
-    { 0x2024, 0,    "onedotenleader" },
-    { 0x215B, 0,    "oneeighth" },
-    { 0xF6DC, 0,    "onefitted" },
-    { 0x00BD, 0,    "onehalf" },
-    { 0x2081, 0,    "oneinferior" },
-    { 0xF731, 0,    "oneoldstyle" },
-    { 0x00BC, 0,    "onequarter" },
-    { 0x00B9, 0,    "onesuperior" },
-    { 0x2153, 0,    "onethird" },
-    { 0x25E6, 0,    "openbullet" },
-    { 0x00AA, 0343, "ordfeminine" },
-    { 0x00BA, 0353, "ordmasculine" },
-    { 0x221F, 0,    "orthogonal" },
-    { 0x00F8, 0371, "oslash" },
-    { 0x01FF, 0,    "oslashacute" },
-    { 0xF6F0, 0,    "osuperior" },
-    { 0x00F5, 0,    "otilde" },
-    { 0x0070, 0160, "p" },
-    { 0x00B6, 0266, "paragraph" },
-    { 0x0028, 050,  "parenleft" },
-    { 0xF8ED, 0,    "parenleftbt" },
-    { 0xF8EC, 0,    "parenleftex" },
-    { 0x208D, 0,    "parenleftinferior" },
-    { 0x207D, 0,    "parenleftsuperior" },
-    { 0xF8EB, 0,    "parenlefttp" },
-    { 0x0029, 051,  "parenright" },
-    { 0xF8F8, 0,    "parenrightbt" },
-    { 0xF8F7, 0,    "parenrightex" },
-    { 0x208E, 0,    "parenrightinferior" },
-    { 0x207E, 0,    "parenrightsuperior" },
-    { 0xF8F6, 0,    "parenrighttp" },
-    { 0x2202, 0,    "partialdiff" },
-    { 0x0025, 045,  "percent" },
-    { 0x002E, 056,  "period" },
-    { 0x00B7, 0264, "periodcentered" },
-    { 0x2219, 0,    "periodcentered" },
-    { 0xF6E7, 0,    "periodinferior" },
-    { 0xF6E8, 0,    "periodsuperior" },
-    { 0x22A5, 0,    "perpendicular" },
-    { 0x2030, 0275, "perthousand" },
-    { 0x20A7, 0,    "peseta" },
-    { 0x03C6, 0,    "phi" },
-    { 0x03D5, 0,    "phi1" },
-    { 0x03C0, 0,    "pi" },
-    { 0x002B, 053,  "plus" },
-    { 0x00B1, 0,    "plusminus" },
-    { 0x211E, 0,    "prescription" },
-    { 0x220F, 0,    "product" },
-    { 0x2282, 0,    "propersubset" },
-    { 0x2283, 0,    "propersuperset" },
-    { 0x221D, 0,    "proportional" },
-    { 0x03C8, 0,    "psi" },
-    { 0x0071, 0161, "q" },
-    { 0x003F, 077,  "question" },
-    { 0x00BF, 0277, "questiondown" },
-    { 0xF7BF, 0,    "questiondownsmall" },
-    { 0xF73F, 0,    "questionsmall" },
-    { 0x0022, 042,  "quotedbl" },
-    { 0x201E, 0271, "quotedblbase" },
-    { 0x201C, 0252, "quotedblleft" },
-    { 0x201D, 0272, "quotedblright" },
-    { 0x2018, 0140, "quoteleft" },
-    { 0x201B, 0,    "quotereversed" },
-    { 0x2019, 047,  "quoteright" },
-    { 0x201A, 0270, "quotesinglbase" },
-    { 0x0027, 0251, "quotesingle" },
-    { 0x0072, 0162, "r" },
-    { 0x0155, 0,    "racute" },
-    { 0x221A, 0,    "radical" },
-    { 0xF8E5, 0,    "radicalex" },
-    { 0x0159, 0,    "rcaron" },
-    { 0x0157, 0,    "rcommaaccent" },
-    { 0x2286, 0,    "reflexsubset" },
-    { 0x2287, 0,    "reflexsuperset" },
-    { 0x00AE, 0,    "registered" },
-    { 0xF8E8, 0,    "registersans" },
-    { 0xF6DA, 0,    "registerserif" },
-    { 0x2310, 0,    "revlogicalnot" },
-    { 0x03C1, 0,    "rho" },
-    { 0x02DA, 0312, "ring" },
-    { 0xF6F1, 0,    "rsuperior" },
-    { 0x2590, 0,    "rtblock" },
-    { 0xF6DD, 0,    "rupiah" },
-    { 0x0073, 0163, "s" },
-    { 0x015B, 0,    "sacute" },
-    { 0x0161, 0,    "scaron" },
-    { 0x015F, 0,    "scedilla" },
-    { 0xF6C2, 0,    "scedilla" },
-    { 0x015D, 0,    "scircumflex" },
-    { 0x0219, 0,    "scommaaccent" },
-    { 0x2033, 0,    "second" },
-    { 0x00A7, 0247, "section" },
-    { 0x003B, 073,  "semicolon" },
-    { 0x0037, 067,  "seven" },
-    { 0x215E, 0,    "seveneighths" },
-    { 0x2087, 0,    "seveninferior" },
-    { 0xF737, 0,    "sevenoldstyle" },
-    { 0x2077, 0,    "sevensuperior" },
-    { 0x2592, 0,    "shade" },
-    { 0x03C3, 0,    "sigma" },
-    { 0x03C2, 0,    "sigma1" },
-    { 0x223C, 0,    "similar" },
-    { 0x0036, 066,  "six" },
-    { 0x2086, 0,    "sixinferior" },
-    { 0xF736, 0,    "sixoldstyle" },
-    { 0x2076, 0,    "sixsuperior" },
-    { 0x002F, 057,  "slash" },
-    { 0x263A, 0,    "smileface" },
-    { 0x0020, 040,  "space" },
-    { 0x00A0, 040,  "space" },
-    { 0x2660, 0,    "spade" },
-    { 0xF6F2, 0,    "ssuperior" },
-    { 0x00A3, 0243, "sterling" },
-    { 0x220B, 0,    "suchthat" },
-    { 0x2211, 0,    "summation" },
-    { 0x263C, 0,    "sun" },
-    { 0x0074, 0164, "t" },
-    { 0x03C4, 0,    "tau" },
-    { 0x0167, 0,    "tbar" },
-    { 0x0165, 0,    "tcaron" },
-    { 0x0163, 0,    "tcommaaccent" },
-    { 0x021B, 0,    "tcommaaccent" },
-    { 0x2234, 0,    "therefore" },
-    { 0x03B8, 0,    "theta" },
-    { 0x03D1, 0,    "theta1" },
-    { 0x00FE, 0,    "thorn" },
-    { 0x0033, 063,  "three" },
-    { 0x215C, 0,    "threeeighths" },
-    { 0x2083, 0,    "threeinferior" },
-    { 0xF733, 0,    "threeoldstyle" },
-    { 0x00BE, 0,    "threequarters" },
-    { 0xF6DE, 0,    "threequartersemdash" },
-    { 0x00B3, 0,    "threesuperior" },
-    { 0x02DC, 0304, "tilde" },
-    { 0x0303, 0,    "tildecomb" },
-    { 0x0384, 0,    "tonos" },
-    { 0x2122, 0,    "trademark" },
-    { 0xF8EA, 0,    "trademarksans" },
-    { 0xF6DB, 0,    "trademarkserif" },
-    { 0x25BC, 0,    "triagdn" },
-    { 0x25C4, 0,    "triaglf" },
-    { 0x25BA, 0,    "triagrt" },
-    { 0x25B2, 0,    "triagup" },
-    { 0xF6F3, 0,    "tsuperior" },
-    { 0x0032, 062,  "two" },
-    { 0x2025, 0,    "twodotenleader" },
-    { 0x2082, 0,    "twoinferior" },
-    { 0xF732, 0,    "twooldstyle" },
-    { 0x00B2, 0,    "twosuperior" },
-    { 0x2154, 0,    "twothirds" },
-    { 0x0075, 0165, "u" },
-    { 0x00FA, 0,    "uacute" },
-    { 0x016D, 0,    "ubreve" },
-    { 0x00FB, 0,    "ucircumflex" },
-    { 0x00FC, 0,    "udieresis" },
-    { 0x00F9, 0,    "ugrave" },
-    { 0x01B0, 0,    "uhorn" },
-    { 0x0171, 0,    "uhungarumlaut" },
-    { 0x016B, 0,    "umacron" },
-    { 0x005F, 0137, "underscore" },
-    { 0x2017, 0,    "underscoredbl" },
-    { 0x222A, 0,    "union" },
-    { 0x2200, 0,    "universal" },
-    { 0x0173, 0,    "uogonek" },
-    { 0x2580, 0,    "upblock" },
-    { 0x03C5, 0,    "upsilon" },
-    { 0x03CB, 0,    "upsilondieresis" },
-    { 0x03B0, 0,    "upsilondieresistonos" },
-    { 0x03CD, 0,    "upsilontonos" },
-    { 0x016F, 0,    "uring" },
-    { 0x0169, 0,    "utilde" },
-    { 0x0076, 0166, "v" },
-    { 0x0077, 0167, "w" },
-    { 0x1E83, 0,    "wacute" },
-    { 0x0175, 0,    "wcircumflex" },
-    { 0x1E85, 0,    "wdieresis" },
-    { 0x2118, 0,    "weierstrass" },
-    { 0x1E81, 0,    "wgrave" },
-    { 0x0078, 0170, "x" },
-    { 0x03BE, 0,    "xi" },
-    { 0x0079, 0171, "y" },
-    { 0x00FD, 0,    "yacute" },
-    { 0x0177, 0,    "ycircumflex" },
-    { 0x00FF, 0,    "ydieresis" },
-    { 0x00A5, 0245, "yen" },
-    { 0x1EF3, 0,    "ygrave" },
-    { 0x007A, 0172, "z" },
-    { 0x017A, 0,    "zacute" },
-    { 0x017E, 0,    "zcaron" },
-    { 0x017C, 0,    "zdotaccent" },
-    { 0x0030, 060,  "zero" },
-    { 0x2080, 0,    "zeroinferior" },
-    { 0xF730, 0,    "zerooldstyle" },
-    { 0x2070, 0,    "zerosuperior" },
-    { 0x03B6, 0,    "zeta" }
-};
diff --git a/vcl/unx/generic/fontmanager/afm_keyword_list b/vcl/unx/generic/fontmanager/afm_keyword_list
deleted file mode 100644
index c9bb134..0000000
--- a/vcl/unx/generic/fontmanager/afm_keyword_list
+++ /dev/null
@@ -1,62 +0,0 @@
-%language=C++
-%global-table
-%null-strings
-%struct-type
-struct hash_entry { const char* name; enum parseKey eKey; };
-%%
-Ascender,ASCENDER
-Ascent,ASCENT
-B,CHARBBOX
-C,CODE
-CC,COMPCHAR
-CH,CODEHEX
-CapHeight,CAPHEIGHT
-CharWidth,CHARWIDTH
-CharacterSet,CHARACTERSET
-Characters,CHARACTERS
-Comment,COMMENT
-Descender,DESCENDER
-Descent,DESCENT
-Em,EM
-EncodingScheme,ENCODINGSCHEME
-EndCharMetrics,ENDCHARMETRICS
-EndComposites,ENDCOMPOSITES
-EndDirection,ENDDIRECTION
-EndFontMetrics,ENDFONTMETRICS
-EndKernData,ENDKERNDATA
-EndKernPairs,ENDKERNPAIRS
-EndTrackKern,ENDTRACKKERN
-FamilyName,FAMILYNAME
-FontBBox,FONTBBOX
-FontName,FONTNAME
-FullName,FULLNAME
-IsBaseFont,ISBASEFONT
-IsFixedPitch,ISFIXEDPITCH
-ItalicAngle,ITALICANGLE
-KP,KERNPAIR
-KPX,KERNPAIRXAMT
-L,LIGATURE
-MappingScheme,MAPPINGSCHEME
-MetricsSets,METRICSSETS
-N,CHARNAME
-Notice,NOTICE
-PCC,COMPCHARPIECE
-StartCharMetrics,STARTCHARMETRICS
-StartComposites,STARTCOMPOSITES
-StartDirection,STARTDIRECTION
-StartFontMetrics,STARTFONTMETRICS
-StartKernData,STARTKERNDATA
-StartKernPairs,STARTKERNPAIRS
-StartTrackKern,STARTTRACKKERN
-StdHW,STDHW
-StdVW,STDVW
-TrackKern,TRACKKERN
-UnderlinePosition,UNDERLINEPOSITION
-UnderlineThickness,UNDERLINETHICKNESS
-V,VVECTOR
-Version,VERSION
-W,XYWIDTH
-W0X,X0WIDTH
-WX,XWIDTH
-Weight,WEIGHT
-XHeight,XHEIGHT
diff --git a/vcl/unx/generic/fontmanager/fontcache.cxx b/vcl/unx/generic/fontmanager/fontcache.cxx
index e308db8..5c6df51 100644
--- a/vcl/unx/generic/fontmanager/fontcache.cxx
+++ b/vcl/unx/generic/fontmanager/fontcache.cxx
@@ -37,7 +37,7 @@
 #include <cstdio>
 #endif
 
-#define CACHE_MAGIC "LibreOffice PspFontCacheFile format 6"
+#define CACHE_MAGIC "LibreOffice PspFontCacheFile format 7"
 
 using namespace std;
 using namespace psp;
@@ -203,10 +203,6 @@ void FontCache::flush()
 
                 switch( (*it)->m_eType )
                 {
-                    case fonttype::Type1:
-                        aLine.append(';');
-                        aLine.append(static_cast<const PrintFontManager::Type1FontFile*>(*it)->m_aMetricFile);
-                        break;
                     case fonttype::TrueType:
                         aLine.append(';');
                         aLine.append(static_cast<sal_Int32>(static_cast<const PrintFontManager::TrueTypeFontFile*>(*it)->m_nTypeFlags));
@@ -313,8 +309,7 @@ void FontCache::read()
             const char* pLine = aLine.getStr();
 
             fonttype::type eType = (fonttype::type)atoi( pLine );
-            if( eType != fonttype::TrueType     &&
-                eType != fonttype::Type1 )
+            if( eType != fonttype::TrueType )
                 continue;
             while( *pLine && *pLine != ';' )
                 pLine++;
@@ -335,9 +330,6 @@ void FontCache::read()
                     case fonttype::TrueType:
                         pFont = new PrintFontManager::TrueTypeFontFile();
                         break;
-                    case fonttype::Type1:
-                        pFont = new PrintFontManager::Type1FontFile();
-                        break;
                     default: break;
                 }
 
@@ -414,14 +406,6 @@ void FontCache::read()
                         static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_aFontFile = aFile;
                         nStyleTokenNr++;
                         break;
-                    case fonttype::Type1:
-                    {
-                        int nTokLen = (nTokens > 19 ) ? nTokenPos[19]-nTokenPos[18]-1 : nLen - nTokenPos[18];
-                        static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_aMetricFile = OString( pLine + nTokenPos[18], nTokLen );
-                        static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_nDirectory = nDir;
-                        static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_aFontFile = aFile;
-                        nStyleTokenNr++;
-                    }
                     break;
                     default: break;
                 }
@@ -485,11 +469,6 @@ void FontCache::copyPrintFont( const PrintFontManager::PrintFont* pFrom, PrintFo
             static_cast<PrintFontManager::TrueTypeFontFile*>(pTo)->m_nCollectionEntry = static_cast<const PrintFontManager::TrueTypeFontFile*>(pFrom)->m_nCollectionEntry;
             static_cast<PrintFontManager::TrueTypeFontFile*>(pTo)->m_nTypeFlags = static_cast<const PrintFontManager::TrueTypeFontFile*>(pFrom)->m_nTypeFlags;
             break;
-        case fonttype::Type1:
-            static_cast<PrintFontManager::Type1FontFile*>(pTo)->m_nDirectory = static_cast<const PrintFontManager::Type1FontFile*>(pFrom)->m_nDirectory;
-            static_cast<PrintFontManager::Type1FontFile*>(pTo)->m_aFontFile = static_cast<const PrintFontManager::Type1FontFile*>(pFrom)->m_aFontFile;
-            static_cast<PrintFontManager::Type1FontFile*>(pTo)->m_aMetricFile = static_cast<const PrintFontManager::Type1FontFile*>(pFrom)->m_aMetricFile;
-            break;
         default: break;
     }
     pTo->m_nFamilyName      = pFrom->m_nFamilyName;
@@ -534,16 +513,6 @@ bool FontCache::equalsPrintFont( const PrintFontManager::PrintFont* pLeft, Print
                 return false;
         }
         break;
-        case fonttype::Type1:
-        {
-            const PrintFontManager::Type1FontFile* pLT = static_cast<const PrintFontManager::Type1FontFile*>(pLeft);
-            const PrintFontManager::Type1FontFile* pRT = static_cast<const PrintFontManager::Type1FontFile*>(pRight);
-            if( pRT->m_nDirectory       != pLT->m_nDirectory        ||
-                pRT->m_aFontFile        != pLT->m_aFontFile         ||
-                pRT->m_aMetricFile      != pLT->m_aMetricFile )
-                return false;
-        }
-        break;
         default: break;
     }
     if( pRight->m_nFamilyName       != pLeft->m_nFamilyName     ||
@@ -586,9 +555,6 @@ PrintFontManager::PrintFont* FontCache::clonePrintFont( const PrintFontManager::
         case fonttype::TrueType:
             pFont = new PrintFontManager::TrueTypeFontFile();
             break;
-        case fonttype::Type1:
-            pFont = new PrintFontManager::Type1FontFile();
-            break;
         default: break;
     }
     if( pFont )
@@ -635,10 +601,6 @@ void FontCache::updateFontCacheEntry( const PrintFontManager::PrintFont* pFont,
             nDirID = static_cast<const PrintFontManager::TrueTypeFontFile*>(pFont)->m_nDirectory;
             aFile = static_cast<const PrintFontManager::TrueTypeFontFile*>(pFont)->m_aFontFile;
             break;
-        case fonttype::Type1:
-            nDirID = static_cast<const PrintFontManager::Type1FontFile*>(pFont)->m_nDirectory;
-            aFile = static_cast<const PrintFontManager::Type1FontFile*>(pFont)->m_aFontFile;
-            break;
         default:
             return;
     }
diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx
index 488e675..4c839f4 100644
--- a/vcl/unx/generic/fontmanager/fontmanager.cxx
+++ b/vcl/unx/generic/fontmanager/fontmanager.cxx
@@ -52,7 +52,6 @@
 #include "i18nlangtag/applelangid.hxx"
 #include "i18nlangtag/mslangid.hxx"
 
-#include "parseAFM.hxx"
 #include "sft.hxx"
 
 #if OSL_DEBUG_LEVEL > 1
@@ -62,9 +61,6 @@
 
 #include <algorithm>
 #include <set>
-#include <unordered_set>
-
-#include "adobe_encoding_table.hxx"
 
 #ifdef CALLGRIND_COMPILE
 #include <valgrind/callgrind.h>
@@ -95,43 +91,6 @@ inline sal_uInt16 getUInt16BE( const sal_uInt8*& pBuffer )
     return nRet;
 }
 
-static FontWeight parseWeight( const OString& rWeight )
-{
-    FontWeight eWeight = WEIGHT_DONTKNOW;
-    if (rWeight.indexOf("bold") != -1)
-    {
-        if (rWeight.indexOf("emi") != -1) // semi, demi
-            eWeight = WEIGHT_SEMIBOLD;
-        else if (rWeight.indexOf("ultra") != -1)
-            eWeight = WEIGHT_ULTRABOLD;
-        else
-            eWeight = WEIGHT_BOLD;
-    }
-    else if (rWeight.indexOf("heavy") != -1)
-        eWeight = WEIGHT_BOLD;
-    else if (rWeight.indexOf("light") != -1)
-    {
-        if (rWeight.indexOf("emi") != -1) // semi, demi
-            eWeight = WEIGHT_SEMILIGHT;
-        else if (rWeight.indexOf("ultra") != -1)
-            eWeight = WEIGHT_ULTRALIGHT;
-        else
-            eWeight = WEIGHT_LIGHT;
-    }
-    else if (rWeight.indexOf("black") != -1)
-        eWeight = WEIGHT_BLACK;
-    else if (rWeight == "demi")
-        eWeight = WEIGHT_SEMIBOLD;
-    else if ((rWeight == "book") ||
-             (rWeight == "semicondensed"))
-        eWeight = WEIGHT_LIGHT;
-    else if ((rWeight == "medium") || (rWeight == "roman"))
-        eWeight = WEIGHT_MEDIUM;
-    else
-        eWeight = WEIGHT_NORMAL;
-    return eWeight;
-}
-
 /*
  *  PrintFont implementations
  */
@@ -144,7 +103,6 @@ PrintFontManager::PrintFont::PrintFont( fonttype::type eType ) :
         m_eWeight( WEIGHT_DONTKNOW ),
         m_ePitch( PITCH_DONTKNOW ),
         m_aEncoding( RTL_TEXTENCODING_DONTKNOW ),
-        m_bFontEncodingOnly( false ),
         m_pMetrics( nullptr ),
         m_nAscend( 0 ),
         m_nDescend( 0 ),
@@ -163,10 +121,6 @@ PrintFontManager::PrintFont::~PrintFont()
     delete m_pMetrics;
 }
 
-PrintFontManager::Type1FontFile::~Type1FontFile()
-{
-}
-
 PrintFontManager::TrueTypeFontFile::TrueTypeFontFile()
 :   PrintFont( fonttype::TrueType )
 ,   m_nDirectory( 0 )
@@ -178,11 +132,6 @@ PrintFontManager::TrueTypeFontFile::~TrueTypeFontFile()
 {
 }
 
-bool PrintFontManager::Type1FontFile::queryMetricPage( int /*nPage*/, MultiAtomProvider* pProvider )
-{
-    return readAfmMetrics( pProvider, false, false );
-}
-
 bool PrintFontManager::TrueTypeFontFile::queryMetricPage( int nPage, MultiAtomProvider* /*pProvider*/ )
 {
     bool bSuccess = false;
@@ -248,396 +197,6 @@ bool PrintFontManager::TrueTypeFontFile::queryMetricPage( int nPage, MultiAtomPr
     return bSuccess;
 }
 
-/* #i73387# There seem to be fonts with a rather unwell chosen family name
-*  consider e.g. "Helvetica Narrow" which defines its family as "Helvetica"
-*  It can really only be distinguished by its PSName and FullName. Both of
-*  which are not user presentable in OOo. So replace it by something sensible.
-*
-*  If other fonts feature this behaviour, insert them to the map.
-*/
-static bool familyNameOverride( const OUString& i_rPSname, OUString& o_rFamilyName )
-{
-    static std::unordered_map< OUString, OUString, OUStringHash > aPSNameToFamily( 16 );
-    if( aPSNameToFamily.empty() ) // initialization
-    {
-        aPSNameToFamily[ "Helvetica-Narrow" ] = "Helvetica Narrow";
-        aPSNameToFamily[ "Helvetica-Narrow-Bold" ] = "Helvetica Narrow";
-        aPSNameToFamily[ "Helvetica-Narrow-BoldOblique" ] = "Helvetica Narrow";
-        aPSNameToFamily[ "Helvetica-Narrow-Oblique" ] = "Helvetica Narrow";
-    }
-    std::unordered_map<OUString,OUString,OUStringHash>::const_iterator it =
-       aPSNameToFamily.find( i_rPSname );
-    bool bReplaced = (it != aPSNameToFamily.end() );
-    if( bReplaced )
-        o_rFamilyName = it->second;
-    return bReplaced;
-};
-
-bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, bool bFillEncodingvector, bool bOnlyGlobalAttributes )
-{
-    PrintFontManager& rManager( PrintFontManager::get() );
-    const OString& rFileName = rManager.getAfmFile( this );
-
-    FontInfo* pInfo = nullptr;
-    parseFile( rFileName.getStr(), &pInfo, P_ALL );
-    if( ! pInfo || ! pInfo->numOfChars )
-    {
-        if( pInfo )
-            freeFontInfo( pInfo );
-        return false;
-    }
-
-    m_aEncodingVector.clear();
-    m_aEncodingVectorPriority.clear();
-    // fill in global info
-
-    // PSName
-    OUString aPSName( OStringToOUString( pInfo->gfi->fontName, RTL_TEXTENCODING_ISO_8859_1 ) );
-    m_nPSName = pProvider->getAtom( ATOM_PSNAME, aPSName );
-
-    // family name (if not already set)
-    OUString aFamily;
-    if( ! m_nFamilyName )
-    {
-        aFamily = OStringToOUString( pInfo->gfi->familyName, RTL_TEXTENCODING_ISO_8859_1 );
-        if( aFamily.isEmpty() )
-        {
-            aFamily = OStringToOUString( pInfo->gfi->fontName, RTL_TEXTENCODING_ISO_8859_1 );
-            sal_Int32 nIndex  = 0;
-            aFamily = aFamily.getToken( 0, '-', nIndex );
-        }
-        familyNameOverride( aPSName, aFamily );
-        m_nFamilyName = pProvider->getAtom( ATOM_FAMILYNAME, aFamily );
-    }
-    else
-        aFamily = pProvider->getString( ATOM_FAMILYNAME, m_nFamilyName );
-
-    // style name: if fullname begins with family name
-    // interpret the rest of fullname as style
-    if( m_aStyleName.isEmpty() && pInfo->gfi->fullName && *pInfo->gfi->fullName )
-    {
-        OUString aFullName( OStringToOUString( pInfo->gfi->fullName, RTL_TEXTENCODING_ISO_8859_1 ) );
-        if( aFullName.startsWith( aFamily ) )
-            m_aStyleName = WhitespaceToSpace( aFullName.copy( aFamily.getLength() ) );
-    }
-
-    // italic
-    if( pInfo->gfi->italicAngle > 0 )
-        m_eItalic = ITALIC_OBLIQUE;
-    else if( pInfo->gfi->italicAngle < 0 )
-        m_eItalic = ITALIC_NORMAL;
-    else
-        m_eItalic = ITALIC_NONE;
-
-    // weight
-    OString aWeight( pInfo->gfi->weight );
-    m_eWeight = parseWeight( aWeight.toAsciiLowerCase() );
-
-    // pitch
-    m_ePitch = pInfo->gfi->isFixedPitch ? PITCH_FIXED : PITCH_VARIABLE;
-
-    // encoding - only set if unknown
-    int nAdobeEncoding = 0;
-    if( pInfo->gfi->encodingScheme )
-    {
-        if( !strcmp( pInfo->gfi->encodingScheme, "AdobeStandardEncoding" ) )
-            nAdobeEncoding = 1;
-        else if( !strcmp( pInfo->gfi->encodingScheme, "ISO10646-1" ) )
-        {
-            nAdobeEncoding = 1;
-            m_aEncoding = RTL_TEXTENCODING_UNICODE;
-        }
-        else if( !strcmp( pInfo->gfi->encodingScheme, "Symbol") )
-            nAdobeEncoding = 2;
-        else if( !strcmp( pInfo->gfi->encodingScheme, "FontSpecific") )
-            nAdobeEncoding = 3;
-
-        if( m_aEncoding == RTL_TEXTENCODING_DONTKNOW )
-            m_aEncoding = nAdobeEncoding == 1 ?
-                RTL_TEXTENCODING_ADOBE_STANDARD : RTL_TEXTENCODING_SYMBOL;
-    }
-    else if( m_aEncoding == RTL_TEXTENCODING_DONTKNOW )
-        m_aEncoding = RTL_TEXTENCODING_ADOBE_STANDARD;
-
-    // try to parse the font name and decide whether it might be a
-    // japanese font. Who invented this PITA ?
-    OUString aPSNameLastToken( aPSName.copy( aPSName.lastIndexOf( '-' )+1 ) );
-    if( aPSNameLastToken == "H"    ||
-        aPSNameLastToken == "V"  )
-    {
-        static const char* pEncs[] =
-            {
-                "EUC",
-                "RKSJ",
-                "SJ"
-            };
-        static const rtl_TextEncoding aEncs[] =
-            {
-                RTL_TEXTENCODING_EUC_JP,
-                RTL_TEXTENCODING_SHIFT_JIS,
-                RTL_TEXTENCODING_JIS_X_0208
-            };
-
-        for( unsigned int enc = 0; enc < SAL_N_ELEMENTS( aEncs ) && m_aEncoding == RTL_TEXTENCODING_DONTKNOW; enc++ )
-        {
-            sal_Int32 nIndex = 0, nOffset = 1;
-            do
-            {
-                OUString aToken( aPSName.getToken( nOffset, '-', nIndex ) );
-                if( nIndex == -1 )
-                    break;
-                nOffset = 0;
-                if( aToken.equalsAscii( pEncs[enc] ) )
-                {
-                    m_aEncoding = aEncs[ enc ];
-                    m_bFontEncodingOnly = true;
-                }
-            } while( nIndex != -1 );
-        }
-
-        // default is jis
-        if( m_aEncoding == RTL_TEXTENCODING_DONTKNOW )
-            m_aEncoding = RTL_TEXTENCODING_JIS_X_0208;
-#if OSL_DEBUG_LEVEL > 1
-        fprintf( stderr, "Encoding %d for %s\n", m_aEncoding, pInfo->gfi->fontName );
-#endif
-    }
-
-    // #i37313# check if Fontspecific is not rather some character encoding
-    if( nAdobeEncoding == 3 && m_aEncoding == RTL_TEXTENCODING_SYMBOL )
-    {
-        bool bYFound = false;
-        bool bQFound = false;
-        CharMetricInfo* pChar = pInfo->cmi;
-        for( int j = 0; j < pInfo->numOfChars && ! (bYFound && bQFound); j++ )
-        {
-            if( pChar[j].name )
-            {
-                if( pChar[j].name[0] == 'Y' && pChar[j].name[1] == 0 )
-                    bYFound = true;
-                else if( pChar[j].name[0] == 'Q' && pChar[j].name[1] == 0 )
-                    bQFound = true;
-            }
-        }
-        if( bQFound && bYFound )
-        {
-            #if OSL_DEBUG_LEVEL > 1
-            fprintf( stderr, "setting FontSpecific font %s (file %s) to unicode\n",
-                     pInfo->gfi->fontName,
-                     rFileName.getStr()
-                     );
-            #endif
-            nAdobeEncoding = 4;
-            m_aEncoding = RTL_TEXTENCODING_UNICODE;
-            bFillEncodingvector = false; // will be filled anyway, don't do the work twice
-        }
-    }
-
-    // ascend
-    m_nAscend = pInfo->gfi->fontBBox.ury;
-
-    // descend
-    // descends have opposite sign of our definition
-    m_nDescend = -pInfo->gfi->fontBBox.lly;
-
-    // fallback to ascender, descender
-    // interesting: the BBox seems to describe Ascender and Descender better
-    // as we understand it
-    if( m_nAscend == 0 )
-        m_nAscend = pInfo->gfi->ascender;
-    if( m_nDescend == 0)
-        m_nDescend = -pInfo->gfi->descender;
-
-    m_nLeading = m_nAscend + m_nDescend - 1000;
-
-    delete m_pMetrics;
-    m_pMetrics = new PrintFontMetrics;
-    // mark all pages as queried (or clear if only global font info queried)
-    memset( m_pMetrics->m_aPages, bOnlyGlobalAttributes ? 0 : 0xff, sizeof( m_pMetrics->m_aPages ) );
-
-    m_aGlobalMetricX.width = m_aGlobalMetricY.width =
-        pInfo->gfi->charwidth ? pInfo->gfi->charwidth : pInfo->gfi->fontBBox.urx;
-    m_aGlobalMetricX.height = m_aGlobalMetricY.height =
-        pInfo->gfi->capHeight ? pInfo->gfi->capHeight : pInfo->gfi->fontBBox.ury;
-
-    m_nXMin = pInfo->gfi->fontBBox.llx;
-    m_nYMin = pInfo->gfi->fontBBox.lly;
-    m_nXMax = pInfo->gfi->fontBBox.urx;
-    m_nYMax = pInfo->gfi->fontBBox.ury;
-
-    if( bFillEncodingvector || !bOnlyGlobalAttributes )
-    {
-        // fill in character metrics
-
-        // first transform the character codes to unicode
-        // note: this only works with single byte encodings
-        std::unique_ptr<sal_Unicode[]> const pUnicodes(new sal_Unicode[pInfo->numOfChars]);
-        CharMetricInfo* pChar = pInfo->cmi;
-        int i;
-
-        for( i = 0; i < pInfo->numOfChars; i++, pChar++ )
-        {
-            if( nAdobeEncoding == 4 )
-            {
-                if( pChar->name )
-                {
-                    pUnicodes[i] = 0;
-                    std::vector< sal_Unicode > aCodes = rManager.getUnicodeFromAdobeName( pChar->name );
-                    for( std::vector< sal_Unicode >::const_iterator it = aCodes.begin(); it != aCodes.end(); ++it )
-                    {
-                        if( *it != 0 )
-                        {
-                            m_aEncodingVector[ *it ] = pChar->code;
-                            if( pChar->code == -1 )
-                                m_aNonEncoded[ *it ] = pChar->name;
-                            if( ! pUnicodes[i] ) // map the first
-                                pUnicodes[i] = *it;
-                        }
-                    }
-                }
-            }
-            else if( pChar->code != -1 )
-            {
-                if( nAdobeEncoding == 3 && m_aEncoding == RTL_TEXTENCODING_SYMBOL )
-                {
-                    pUnicodes[i] = pChar->code + 0xf000;
-                    if( bFillEncodingvector )
-                    {
-                        m_aEncodingVector[ pUnicodes[i] ] = pChar->code;
-                        m_aEncodingVectorPriority.insert(pUnicodes[i]);
-                    }
-                    continue;
-                }
-
-                if( m_aEncoding == RTL_TEXTENCODING_UNICODE )
-                {
-                    pUnicodes[i] = (sal_Unicode)pChar->code;
-                    continue;
-                }
-
-                OStringBuffer aTranslate;
-                if( pChar->code & 0xff000000 )
-                    aTranslate.append((char)(pChar->code >> 24));
-                if( pChar->code & 0xffff0000 )
-                    aTranslate.append((char)((pChar->code & 0x00ff0000) >> 16));
-                if( pChar->code & 0xffffff00 )
-                    aTranslate.append((char)((pChar->code & 0x0000ff00) >> 8 ));
-                aTranslate.append((char)(pChar->code & 0xff));
-                OUString aUni(OStringToOUString(aTranslate.makeStringAndClear(), m_aEncoding));
-                pUnicodes[i] = aUni.toChar();
-            }
-            else
-                pUnicodes[i] = 0;
-        }
-
-        // now fill in the character metrics
-        // parseAFM.cxx effectively only supports direction 0 (horizontal)
-        pChar = pInfo->cmi;
-        CharacterMetric aMetric;
-        for( i = 0; i < pInfo->numOfChars; i++, pChar++ )
-        {
-            if( pChar->code == -1 && ! pChar->name )
-                continue;
-
-            if( bFillEncodingvector && pChar->name )
-            {
-                std::vector< sal_Unicode > aCodes = rManager.getUnicodeFromAdobeName( pChar->name );
-                for( std::vector< sal_Unicode >::const_iterator it = aCodes.begin(); it != aCodes.end(); ++it )
-                {
-                    if( *it != 0 )
-                    {
-                        m_aEncodingVector[ *it ] = pChar->code;
-                        if( pChar->code == -1 )
-                            m_aNonEncoded[ *it ] = pChar->name;
-                    }
-                }
-            }
-
-            aMetric.width   = pChar->wx ? pChar->wx : pChar->charBBox.urx;
-            aMetric.height  = pChar->wy ? pChar->wy : pChar->charBBox.ury - pChar->charBBox.lly;
-            if( aMetric.width == 0 && aMetric.height == 0 )
-                // guess something for e.g. space
-                aMetric.width = m_aGlobalMetricX.width/4;
-
-            if( ( nAdobeEncoding == 0 ) ||
-                ( ( nAdobeEncoding == 3 ) && ( m_aEncoding != RTL_TEXTENCODING_SYMBOL ) ) )
-            {
-                if( pChar->code != -1 )
-                {
-                    m_pMetrics->m_aMetrics[ pUnicodes[i] ] = aMetric;
-                    if( bFillEncodingvector )
-                    {
-                        m_aEncodingVector[ pUnicodes[i] ] = pChar->code;
-                        m_aEncodingVectorPriority.insert(pUnicodes[i]);
-                    }
-                }
-                else if( pChar->name )
-                {
-                    std::vector< sal_Unicode > aCodes = rManager.getUnicodeFromAdobeName( pChar->name );
-                    for( std::vector< sal_Unicode >::const_iterator it = aCodes.begin(); it != aCodes.end(); ++it )
-                    {
-                        if( *it != 0 )
-                            m_pMetrics->m_aMetrics[ *it ] = aMetric;
-                    }
-                }
-            }
-            else if( nAdobeEncoding == 1 || nAdobeEncoding == 2 || nAdobeEncoding == 4)
-            {
-                if( pChar->name )
-                {
-                    std::vector< sal_Unicode > aCodes = rManager.getUnicodeFromAdobeName( pChar->name );
-                    for( std::vector< sal_Unicode >::const_iterator it = aCodes.begin(); it != aCodes.end(); ++it )
-                    {
-                        if( *it != 0 )
-                            m_pMetrics->m_aMetrics[ *it ] = aMetric;
-                    }
-                }
-                else if( pChar->code != -1 )
-                {
-                    ::std::pair< std::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator,
-                          std::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator >
-                          aCodes = rManager.getUnicodeFromAdobeCode( pChar->code );
-                    bool bFirst = true;
-                    while( aCodes.first != aCodes.second )
-                    {
-                        if( (*aCodes.first).second != 0 )
-                        {
-                            m_pMetrics->m_aMetrics[ (*aCodes.first).second ] = aMetric;
-                            if( bFillEncodingvector )
-                            {
-                                m_aEncodingVector[ (*aCodes.first).second ] = pChar->code;
-                                if (bFirst) // arbitrarily prefer the first one
-                                {
-                                    m_aEncodingVectorPriority.insert((*aCodes.first).second);
-                                    bFirst = false;
-                                }
-                            }
-                        }
-                        ++aCodes.first;
-                    }
-                }
-            }
-            else if( nAdobeEncoding == 3 )
-            {
-                if( pChar->code != -1 )
-                {
-                    sal_Unicode code = 0xf000 + pChar->code;
-                    m_pMetrics->m_aMetrics[ code ] = aMetric;
-                    // maybe should try to find the name in the convtabs ?
-                    if( bFillEncodingvector )
-                    {
-                        m_aEncodingVector[ code ] = pChar->code;
-                        m_aEncodingVectorPriority.insert(code);
-                    }
-                }
-            }
-        }
-    }
-
-    freeFontInfo( pInfo );
-    return true;
-}
-
 /*
  *  one instance only
  */
@@ -663,17 +222,6 @@ PrintFontManager::PrintFontManager()
     , m_nNextDirAtom( 1 )
     , m_pFontCache( nullptr )
 {
-    for(const AdobeEncEntry& rEntry : aAdobeCodes)
-    {
-        m_aUnicodeToAdobename.insert( std::unordered_multimap< sal_Unicode, OString >::value_type( rEntry.aUnicode, rEntry.pAdobename ) );
-        m_aAdobenameToUnicode.insert( std::unordered_multimap< OString, sal_Unicode, OStringHash >::value_type( rEntry.pAdobename, rEntry.aUnicode ) );
-        if( rEntry.aAdobeStandardCode )
-        {
-            m_aUnicodeToAdobecode.insert( std::unordered_multimap< sal_Unicode, sal_uInt8 >::value_type( rEntry.aUnicode, rEntry.aAdobeStandardCode ) );
-            m_aAdobecodeToUnicode.insert( std::unordered_multimap< sal_uInt8, sal_Unicode >::value_type( rEntry.aAdobeStandardCode, rEntry.aUnicode ) );
-        }
-    }
-
 #if ENABLE_DBUS
     m_aFontInstallerTimer.SetTimeoutHdl(LINK(this, PrintFontManager, autoInstallFontLangSupport));
     m_aFontInstallerTimer.SetTimeout(5000);
@@ -743,7 +291,7 @@ std::vector<fontID> PrintFontManager::addFontFile( const OString& rFileName )
 
 enum fontFormat
 {
-    UNKNOWN, TRUETYPE, CFF, TYPE1
+    UNKNOWN, TRUETYPE, CFF
 };
 
 bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, ::std::list< PrintFontManager::PrintFont* >& rNewFonts, const char *pFormat ) const
@@ -767,15 +315,11 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, ::
             eFormat = TRUETYPE;
         else if (!strcmp(pFormat, "CFF"))
             eFormat = CFF;
-        else if (!strcmp(pFormat, "Type 1"))
-            eFormat = TYPE1;
     }
     if (eFormat == UNKNOWN)
     {
         OString aExt( rFontFile.copy( rFontFile.lastIndexOf( '.' )+1 ) );
-        if( aExt.equalsIgnoreAsciiCase("pfb") || aExt.equalsIgnoreAsciiCase("pfa") )
-            eFormat = TYPE1;
-        else if( aExt.equalsIgnoreAsciiCase("ttf")
+        if( aExt.equalsIgnoreAsciiCase("ttf")
              ||  aExt.equalsIgnoreAsciiCase("ttc")
              ||  aExt.equalsIgnoreAsciiCase("tte") ) // #i33947# for Gaiji support
             eFormat = TRUETYPE;
@@ -783,53 +327,7 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, ::
             eFormat = CFF;
     }
 
-    if (eFormat == TYPE1)
-    {
-        // check for corresponding afm metric
-        // first look for an adjacent file
-        static const char* pSuffix[] = { ".afm", ".AFM" };
-
-        for(const char* i : pSuffix)
-        {
-            OString aName = OStringBuffer(
-                rFontFile.copy(0, rFontFile.getLength() - 4)).
-                append(i).makeStringAndClear();
-
-            OStringBuffer aFilePath(aDir);
-            aFilePath.append('/').append(aName);
-
-            OString aAfmFile;
-            if( access( aFilePath.makeStringAndClear().getStr(), R_OK ) )
-            {
-                // try in subdirectory afm instead
-                aFilePath.append(aDir).append("/afm/").append(aName);
-
-                if (!access(aFilePath.getStr(), R_OK))
-                    aAfmFile = OString("afm/") + aName;
-            }
-            else
-                aAfmFile = aName;
-
-            if( !aAfmFile.isEmpty() )
-            {
-                Type1FontFile* pFont = new Type1FontFile();
-                pFont->m_nDirectory     = nDirID;
-
-                pFont->m_aFontFile      = rFontFile;
-                pFont->m_aMetricFile    = aAfmFile;
-
-                if( ! pFont->readAfmMetrics( m_pAtoms, false, true ) )
-                {
-                    delete pFont;
-                    pFont = nullptr;
-                }
-                if( pFont )
-                    rNewFonts.push_back( pFont );
-                break;
-            }
-        }
-    }
-    else if (eFormat == TRUETYPE || eFormat == CFF)
+    if (eFormat == TRUETYPE || eFormat == CFF)
     {
         // get number of ttc entries
         int nLength = CountTTCFonts( aFullPath.getStr() );
@@ -915,14 +413,6 @@ fontID PrintFontManager::findFontFileID( int nDirID, const OString& rFontFile, i
             continue;
         switch( it->second->m_eType )
         {
-            case fonttype::Type1:
-            {
-                Type1FontFile* const pFont = static_cast< Type1FontFile* const >((*it).second);
-                if( pFont->m_nDirectory == nDirID &&
-                    pFont->m_aFontFile == rFontFile )
-                    nID = it->first;
-            }
-            break;
             case fonttype::TrueType:
             {
                 TrueTypeFontFile* const pFont = static_cast< TrueTypeFontFile* const >((*it).second);
@@ -954,14 +444,6 @@ std::vector<fontID> PrintFontManager::findFontFileIDs( int nDirID, const OString
             continue;
         switch( it->second->m_eType )
         {
-            case fonttype::Type1:
-            {
-                Type1FontFile* const pFont = static_cast< Type1FontFile* const >((*it).second);
-                if( pFont->m_nDirectory == nDirID &&
-                    pFont->m_aFontFile == rFontFile )
-                    aIds.push_back(it->first);
-            }
-            break;
             case fonttype::TrueType:
             {
                 TrueTypeFontFile* const pFont = static_cast< TrueTypeFontFile* const >((*it).second);
@@ -1459,9 +941,7 @@ void PrintFontManager::initialize()
             {
                 fontID aFont = m_nNextFontID++;
                 m_aFonts[ aFont ] = *it;
-                if( (*it)->m_eType == fonttype::Type1 )
-                    m_aFontFileToFontID[ static_cast<Type1FontFile*>(*it)->m_aFontFile ].insert( aFont );
-                else if( (*it)->m_eType == fonttype::TrueType )
+                if( (*it)->m_eType == fonttype::TrueType )
                     m_aFontFileToFontID[ static_cast<TrueTypeFontFile*>(*it)->m_aFontFile ].insert( aFont );
 #if OSL_DEBUG_LEVEL > 1
                 else
@@ -1534,7 +1014,6 @@ void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, FastPrintFontInfo& r
     rInfo.m_ePitch          = pFont->m_ePitch;
     rInfo.m_aEncoding       = pFont->m_aEncoding;
 
-    rInfo.m_bEmbeddable  = (pFont->m_eType == fonttype::Type1);
     rInfo.m_bSubsettable = (pFont->m_eType == fonttype::TrueType); // TODO: rename to SfntType
 
     rInfo.m_aAliases.clear();
@@ -1548,10 +1027,8 @@ void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, PrintFontInfo& rInfo
         ! pFont->m_pMetrics || pFont->m_pMetrics->isEmpty()
         )
     {
-        // might be a truetype font not analyzed or type1 without metrics read
-        if( pFont->m_eType == fonttype::Type1 )
-            pFont->readAfmMetrics( m_pAtoms, false, false );
-        else if( pFont->m_eType == fonttype::TrueType )
+        // might be a truetype font not analyzed
+        if( pFont->m_eType == fonttype::TrueType )
             analyzeTrueTypeFile( pFont );
     }
 
@@ -1592,10 +1069,7 @@ void PrintFontManager::getFontBoundingBox( fontID nFontID, int& xMin, int& yMin,
     {
         if( pFont->m_nXMin == 0 && pFont->m_nYMin == 0 && pFont->m_nXMax == 0 && pFont->m_nYMax == 0 )
         {
-            // might be a truetype font not analyzed or type1 without metrics read
-            if( pFont->m_eType == fonttype::Type1 )
-                pFont->readAfmMetrics( m_pAtoms, false, true );
-            else if( pFont->m_eType == fonttype::TrueType )
+            if( pFont->m_eType == fonttype::TrueType )
                 analyzeTrueTypeFile( pFont );
         }
         xMin = pFont->m_nXMin;
@@ -1681,40 +1155,11 @@ FontFamily PrintFontManager::matchFamilyName( const OUString& rFamily )
     return FAMILY_DONTKNOW;
 }
 
-OString PrintFontManager::getAfmFile( PrintFont* pFont ) const
-{
-    OString aMetricPath;
-    if( pFont )
-    {
-        switch( pFont->m_eType )
-        {
-            case fonttype::Type1:
-            {
-                Type1FontFile* pPSFont = static_cast< Type1FontFile* >(pFont);
-                aMetricPath = getDirectory( pPSFont->m_nDirectory );
-                aMetricPath += "/";
-                aMetricPath += pPSFont->m_aMetricFile;
-            }
-            break;
-            default: break;
-        }
-    }
-    return aMetricPath;
-}
-
 OString PrintFontManager::getFontFile( PrintFont* pFont ) const
 {
     OString aPath;
 
-    if( pFont && pFont->m_eType == fonttype::Type1 )
-    {
-        Type1FontFile* pPSFont = static_cast< Type1FontFile* >(pFont);
-        std::unordered_map< int, OString >::const_iterator it = m_aAtomToDir.find( pPSFont->m_nDirectory );
-        aPath = it->second;
-        aPath += "/";
-        aPath += pPSFont->m_aFontFile;
-    }
-    else if( pFont && pFont->m_eType == fonttype::TrueType )
+    if( pFont && pFont->m_eType == fonttype::TrueType )
     {
         TrueTypeFontFile* pTTFont = static_cast< TrueTypeFontFile* >(pFont);
         std::unordered_map< int, OString >::const_iterator it = m_aAtomToDir.find( pTTFont->m_nDirectory );
@@ -1745,8 +1190,6 @@ int PrintFontManager::getFontAscend( fontID nFontID ) const
         // might be a truetype font not yet analyzed
         if( pFont->m_eType == fonttype::TrueType )
             analyzeTrueTypeFile( pFont );
-        else if( pFont->m_eType == fonttype::Type1 )
-            pFont->readAfmMetrics( m_pAtoms, false, true );
     }
     return pFont ? pFont->m_nAscend : 0;
 }
@@ -1759,8 +1202,6 @@ int PrintFontManager::getFontDescend( fontID nFontID ) const
         // might be a truetype font not yet analyzed
         if( pFont->m_eType == fonttype::TrueType )
             analyzeTrueTypeFile( pFont );
-        else if( pFont->m_eType == fonttype::Type1 )
-            pFont->readAfmMetrics( m_pAtoms, false, true );
     }
     return pFont ? pFont->m_nDescend : 0;
 }
@@ -1839,9 +1280,7 @@ bool PrintFontManager::getMetrics( fontID nFontID, const sal_Unicode* pString, i
         )
     {
         // might be a font not yet analyzed
-        if( pFont->m_eType == fonttype::Type1 )
-            pFont->readAfmMetrics( m_pAtoms, false, false );
-        else if( pFont->m_eType == fonttype::TrueType )
+        if( pFont->m_eType == fonttype::TrueType )
             analyzeTrueTypeFile( pFont );
     }
 
@@ -1880,9 +1319,7 @@ bool PrintFontManager::getMetrics( fontID nFontID, sal_Unicode minCharacter, sal
         )
     {
         // might be a font not yet analyzed
-        if( pFont->m_eType == fonttype::Type1 )
-            pFont->readAfmMetrics( m_pAtoms, false, false );
-        else if( pFont->m_eType == fonttype::TrueType )
+        if( pFont->m_eType == fonttype::TrueType )
             analyzeTrueTypeFile( pFont );
     }
 
@@ -1930,11 +1367,9 @@ bool PrintFontManager::createFontSubset(
     switch( pFont->m_eType )
     {
         case psp::fonttype::TrueType: rInfo.m_nFontType = FontSubsetInfo::SFNT_TTF; break;
-        case psp::fonttype::Type1: rInfo.m_nFontType = FontSubsetInfo::ANY_TYPE1; break;
         default:
             return false;
     }
-    // TODO: remove when Type1 subsetting gets implemented
     if( pFont->m_eType != fonttype::TrueType )
         return false;
 
@@ -2071,8 +1506,7 @@ void PrintFontManager::getGlyphWidths( fontID nFont,
                                        std::map< sal_Unicode, sal_uInt32 >& rUnicodeEnc )
 {
     PrintFont* pFont = getFont( nFont );
-    if( !pFont ||
-        (pFont->m_eType != fonttype::TrueType && pFont->m_eType != fonttype::Type1) )
+    if( !pFont || pFont->m_eType != fonttype::TrueType )
         return;
     if( pFont->m_eType == fonttype::TrueType )
     {
@@ -2131,90 +1565,6 @@ void PrintFontManager::getGlyphWidths( fontID nFont,
         }
         CloseTTFont( pTTFont );
     }
-    else if( pFont->m_eType == fonttype::Type1 )
-    {
-        if( pFont->m_aEncodingVector.empty() )
-            pFont->readAfmMetrics( m_pAtoms, true, true );
-        if( pFont->m_pMetrics )
-        {
-            rUnicodeEnc.clear();
-            rWidths.clear();
-            rWidths.reserve( pFont->m_pMetrics->m_aMetrics.size() );
-            for( std::unordered_map< int, CharacterMetric >::const_iterator it =
-                 pFont->m_pMetrics->m_aMetrics.begin();
-                 it != pFont->m_pMetrics->m_aMetrics.end(); ++it )
-            {
-                if( (it->first & 0x00010000) == 0 || bVertical )
-                {
-                    rUnicodeEnc[ sal_Unicode(it->first & 0x0000ffff) ] = sal_uInt32(rWidths.size());
-                    rWidths.push_back( it->second.width );
-                }
-            }
-        }
-    }
-}
-
-const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( fontID nFont, const std::map< sal_Unicode, OString >** pNonEncoded, std::set<sal_Unicode> const** ppPriority ) const
-{
-    PrintFont* pFont = getFont( nFont );
-    if( !pFont || pFont->m_eType != fonttype::Type1 )
-        return nullptr;
-
-    if( pFont->m_aEncodingVector.empty() )
-        pFont->readAfmMetrics( m_pAtoms, true, true );
-
-    if( pNonEncoded )
-        *pNonEncoded = !pFont->m_aNonEncoded.empty() ? &pFont->m_aNonEncoded : nullptr;
-
-    if (ppPriority)
-    {
-        *ppPriority = &pFont->m_aEncodingVectorPriority;
-    }
-
-    return !pFont->m_aEncodingVector.empty() ? &pFont->m_aEncodingVector : nullptr;
-}
-
-std::list< OString > PrintFontManager::getAdobeNameFromUnicode( sal_Unicode aChar ) const
-{
-    std::pair< std::unordered_multimap< sal_Unicode, OString >::const_iterator,
-        std::unordered_multimap< sal_Unicode, OString >::const_iterator > range
-        =  m_aUnicodeToAdobename.equal_range( aChar );
-
-    std::list< OString > aRet;
-    for( ; range.first != range.second; ++range.first )
-        aRet.push_back( range.first->second );
-
-    if( aRet.empty() && aChar != 0 )
-    {
-        sal_Char aBuf[8];
-        sal_Int32 nChars = snprintf(
-            aBuf, sizeof(aBuf), "uni%.4hX", sal_uInt16(aChar));
-        aRet.push_back( OString( aBuf, nChars ) );
-    }
-
-    return aRet;
-}
-
-std::vector< sal_Unicode >  PrintFontManager::getUnicodeFromAdobeName( const OString& rName ) const
-{
-    std::pair< std::unordered_multimap< OString, sal_Unicode, OStringHash >::const_iterator,
-        std::unordered_multimap< OString, sal_Unicode, OStringHash >::const_iterator > range
-        =  m_aAdobenameToUnicode.equal_range( rName );
-
-    std::vector< sal_Unicode > aRet;
-    for( ; range.first != range.second; ++range.first )
-        aRet.push_back( range.first->second );
-
-    if( aRet.empty() )
-    {
-        if( rName.getLength() == 7 && rName.startsWith( "uni" ) )
-        {
-            sal_Unicode aCode = (sal_Unicode)rName.copy( 3 ).toUInt32( 16 );
-            aRet.push_back( aCode );
-        }
-    }
-
-    return aRet;
 }
 
 /// used by online unit tests via dlopen.
diff --git a/vcl/unx/generic/fontmanager/parseAFM.cxx b/vcl/unx/generic/fontmanager/parseAFM.cxx
deleted file mode 100644
index d933b00..0000000
--- a/vcl/unx/generic/fontmanager/parseAFM.cxx
+++ /dev/null
@@ -1,1465 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved.
- *
- * This file may be freely copied and redistributed as long as:
- *   1) This entire notice continues to be included in the file,
- *   2) If the file has been modified in any way, a notice of such
- *      modification is conspicuously indicated.
- *
- * PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- *
- * ************************************************************************
- * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
- * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
- * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR
- * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY
- * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION,
- * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
- * ************************************************************************
- */
-
-/*
- * Changes made for OpenOffice.org
- *
- *  10/24/2000 pl       - changed code to compile with c++-compilers
- *                      - added namespace to avoid symbol clashes
- *                      - replaced BOOL by bool
- *                      - added function to free space allocated by parseFile
- *  10/26/2000 pl       - added additional keys
- *                      - added ability to parse slightly broken files
- *                      - added charwidth member to GlobalFontInfo
- *  04/26/2001 pl       - added OpenOffice header
- *  10/19/2005 pl       - performance increase:
- *                         - fread file in one pass
- *                         - replace file io by buffer access
- *  10/20/2005 pl       - performance increase:
- *                         - use one table lookup in token() routine
- *                           instead of many conditions
- *                         - return token length in token() routine
- *                         - use hash lookup instead of binary search
- *                           in recognize() routine
- */
-
-/* parseAFM.c
- *
- * This file is used in conjunction with the parseAFM.h header file.
- * This file contains several procedures that are used to parse AFM
- * files. It is intended to work with an application program that needs
- * font metric information. The program can be used as is by making a
- * procedure call to "parseFile" (passing in the expected parameters)
- * and having it fill in a data structure with the data from the
- * AFM file, or an application developer may wish to customize this
- * code.
- *
- * There is also a file, parseAFMclient.c, that is a sample application
- * showing how to call the "parseFile" procedure and how to use the data
- * after "parseFile" has returned.
- *
- * Please read the comments in parseAFM.h and parseAFMclient.c.
- *
- * History:
- *  original: DSM  Thu Oct 20 17:39:59 PDT 1988
- *  modified: DSM  Mon Jul  3 14:17:50 PDT 1989
- *    - added 'storageProblem' return code
- *    - fixed bug of not allocating extra byte for string duplication
- *    - fixed typos
- *  modified: DSM  Tue Apr  3 11:18:34 PDT 1990
- *    - added free(ident) at end of parseFile routine
- *  modified: DSM  Tue Jun 19 10:16:29 PDT 1990
- *    - changed (width == 250) to (width = 250) in initializeArray
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#include "parseAFM.hxx"
-#include <vcl/strhelper.hxx>
-
-#include "rtl/alloc.h"
-
-#define lineterm EOL    /* line terminating character */
-#define normalEOF 1 /* return code from parsing routines used only */
-/* in this module */
-#define False "false"   /* used in string comparison to check the value of */
-/* boolean keys (e.g. IsFixedPitch)  */
-
-#define MATCH(A,B)      (strncmp((A),(B), MAX_NAME) == 0)
-
-namespace psp {
-
-class FileInputStream
-{
-    char*         m_pMemory;
-    unsigned int        m_nPos;
-    unsigned int        m_nLen;
-    public:
-    explicit FileInputStream( const char* pFilename );
-    ~FileInputStream();
-
-    int getChar() { return (m_nPos < m_nLen) ? int(m_pMemory[m_nPos++]) : -1; }
-    void ungetChar()
-    {
-        if( m_nPos > 0 )
-            m_nPos--;
-    }
-};
-
-FileInputStream::FileInputStream(const char* pFilename)
-    : m_pMemory(nullptr)
-    , m_nPos(0)
-    , m_nLen(0)
-{
-    FILE* fp = fopen( pFilename, "r" );
-    if( fp )
-    {
-        struct stat aStat;
-        if (!fstat(fileno(fp), &aStat) && S_ISREG(aStat.st_mode) && aStat.st_size > 0)
-        {
-            m_pMemory = static_cast<char*>(rtl_allocateMemory( aStat.st_size ));
-            m_nLen = (unsigned int)fread( m_pMemory, 1, aStat.st_size, fp );
-        }
-        fclose( fp );
-    }
-}
-
-FileInputStream::~FileInputStream()
-{
-    rtl_freeMemory( m_pMemory );
-}
-
-/*************************** GLOBALS ***********************/
-/* "shorts" for fast case statement
- * The values of each of these enumerated items correspond to an entry in the
- * table of strings defined below. Therefore, if you add a new string as
- * new keyword into the keyStrings table, you must also add a corresponding
- * parseKey AND it MUST be in the same position!
- *
- * IMPORTANT: since the sorting algorithm is a binary search, the strings of
- * keywords must be placed in lexicographical order, below. [Therefore, the
- * enumerated items are not necessarily in lexicographical order, depending
- * on the name chosen. BUT, they must be placed in the same position as the
- * corresponding key string.] The NOPE shall remain in the last position,
- * since it does not correspond to any key string, and it is used in the
- * "recognize" procedure to calculate how many possible keys there are.
- */
-
-// some metrics have Ascent, Descent instead Ascender, Descender or Em
-// which is not allowed per afm spcification, but let us handle
-// this gently
-enum parseKey {
-    ASCENDER, ASCENT, CHARBBOX, CODE, COMPCHAR, CODEHEX, CAPHEIGHT, CHARWIDTH, CHARACTERSET, CHARACTERS, COMMENT,
-    DESCENDER, DESCENT, EM, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES, ENDDIRECTION,
-    ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN,
-    FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISBASEFONT, ISFIXEDPITCH,
-    ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, MAPPINGSCHEME, METRICSSETS, CHARNAME,
-    NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES, STARTDIRECTION,
-    STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS,
-    STARTTRACKKERN, STDHW, STDVW, TRACKKERN, UNDERLINEPOSITION,
-    UNDERLINETHICKNESS, VVECTOR, VERSION, XYWIDTH, X0WIDTH, XWIDTH, WEIGHT, XHEIGHT,
-    NOPE
-};
-
-/*************************** PARSING ROUTINES **************/
-
-/*************************** token *************************/
-
-/*  A "AFM file Conventions" tokenizer. That means that it will
- *  return the next token delimited by white space.  See also
- *  the `linetoken' routine, which does a similar thing but
- *  reads all tokens until the next end-of-line.
- */
-
-// token white space is ' ', '\n', '\r', ',', '\t', ';'
-static const bool is_white_Array[ 256 ] =
-{   false, false, false, false, false, false, false, false, // 0-7
-    false,  true,  true, false, false,  true, false, false, // 8-15
-    false, false, false, false, false, false, false, false, // 16-23
-    false, false, false, false, false, false, false, false, // 24-31
-     true, false, false, false, false, false, false, false, // 32-39
-    false, false, false, false,  true, false, false, false, // 40-47
-    false, false, false, false, false, false, false, false, // 48-55
-    false, false, false,  true, false, false, false, false, // 56-63
-
-    false, false, false, false, false, false, false, false, // 64 -
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, // 127
-
-    false, false, false, false, false, false, false, false, // 128 -
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, // 191
-
-    false, false, false, false, false, false, false, false, // 192 -
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false,
-    false, false, false, false, false, false, false, false, // 255
-};
-// token delimiters are ' ', '\n', '\r', '\t', ':', ';'
-static const bool is_delimiter_Array[ 256 ] =
-{   false, false, false, false, false, false, false, false, // 0-7

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list