§
    ‚Ûg ã                   óæ$  — d dl mZ d dlmZ d dl mZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlT d dlT d dlmZmZ d dlmZ d dlZd dlZd dlZd dlZd dlm Z m!Z! d dl"m#Z# d dl$m%Z% dZ&de&z   dz   Z' ej(        d¦  «        Z)dÖd„Z* e%e*e)¦  «        e)_+         e ej(        d¦  «        ¬¦  «        Z,d„ Z-d„ Z. eej/        ¦  «        d„ ¦   «         Z0 eej/        ¦  «        d„ ¦   «         Z1 eej/        ¦  «        d„ ¦   «         Z2 eej/        ¦  «        d„ ¦   «         Z3 eej4        ¦  «        d„ ¦   «         Z0 eej4        ¦  «        d „ ¦   «         Z5 eej4        ¦  «        d×d#„¦   «         Z2 eej4        ¦  «        d$„ ¦   «         Z3 eej6        ¦  «        d%„ ¦   «         Z7 eej6        ¦  «        d&„ ¦   «         Z8 eej9        ¦  «        d'„ ¦   «         Z7 eej9        ¦  «        d(„ ¦   «         Z8 eej:        ¦  «        d)„ ¦   «         Z7 eej:        ¦  «        d*„ ¦   «         Z8 eej;        ¦  «        d+„ ¦   «         Z7 eej;        ¦  «        d,„ ¦   «         Z8 eej<        ¦  «        d-„ ¦   «         Z7 eej<        ¦  «        d.„ ¦   «         Z8 eej=        ¦  «        d/„ ¦   «         Z> eej?        ¦  «        d0„ ¦   «         Z@ eejA        ¦  «        d1„ ¦   «         Z8 eejA        ¦  «        d2„ ¦   «         ZB eejC        ¦  «        d3„ ¦   «         Z8 eejC        ¦  «        d4„ ¦   «         ZB eejD        ¦  «        d5„ ¦   «         Z8 eejE        ¦  «        d6„ ¦   «         Z@ eejD        ¦  «        d7„ ¦   «         ZB eejF        ¦  «        d8„ ¦   «         Z8 eejF        ¦  «        d9„ ¦   «         ZB eejG        ¦  «        d:„ ¦   «         Z8 eejG        ¦  «        d;„ ¦   «         ZB eejH        ¦  «        d<„ ¦   «         Z8 eejH        ¦  «        d=„ ¦   «         ZB eej6        ej9        ej:        ej;        ej<        ejA        ejC        ejD        ejF        ejG        ejH        ¦  «        d>„ ¦   «         ZI eej6        ej9        ej:        ej;        ej<        ejA        ejC        ejD        ejF        ejG        ejH        ¦  «        d?„ ¦   «         ZJ eej6        ej9        ej:        ej;        ej<        ejK        ejL        ejM        ejN        ¦	  «	        d@„ ¦   «         ZB eej6        ej:        ej<        ¦  «        dA„ ¦   «         ZO eej9        ej;        ejK        ejL        ¦  «        dB„ ¦   «         ZO eejK        ejL        ejM        ejN        ¦  «        dC„ ¦   «         ZP eejK        ejL        ¦  «        dD„ ¦   «         Z7 eejK        ejM        ejL        ejN        ¦  «        dE„ ¦   «         Z8 eejK        ejL        ejM        ejN        ¦  «        dF„ ¦   «         ZI eejK        ejL        ejM        ejN        ¦  «        dG„ ¦   «         ZJ eejQ        ¦  «        dH„ ¦   «         Z7 eejQ        ¦  «        dI„ ¦   «         ZO eejQ        ejR        ¦  «        dJ„ ¦   «         Z8 eejQ        ejR        ¦  «        dK„ ¦   «         ZB eejQ        ejR        ¦  «        dL„ ¦   «         ZI eejQ        ejR        ¦  «        dM„ ¦   «         ZJ eejS        ¦  «        dÖdN„¦   «         Z7 eejS        ¦  «        dO„ ¦   «         Z8 eejS        ¦  «        dP„ ¦   «         ZB eejS        ¦  «        dQ„ ¦   «         ZI eejS        ¦  «        dR„ ¦   «         ZJ eejS        ¦  «        dS„ ¦   «         ZO eejT        ¦  «        dT„ ¦   «         Z8 eejT        ¦  «        dU„ ¦   «         ZB eejT        ¦  «        dV„ ¦   «         ZI eejT        ¦  «        dW„ ¦   «         ZU eejT        ¦  «        dX„ ¦   «         ZV eejW        ¦  «        dY„ ¦   «         ZI eejX        ¦  «        dZ„ ¦   «         ZI eejX        ¦  «        d[„ ¦   «         ZJ eejX        ¦  «        d\„ ¦   «         ZY eejZ        ¦  «        d]„ ¦   «         ZI eej[        ¦  «        d^„ ¦   «         ZI eej[        ¦  «        d_„ ¦   «         ZJ eejZ        ¦  «        d`„ ¦   «         ZY eej[        ¦  «        da„ ¦   «         ZY eej\        ej]        ¦  «        db„ ¦   «         ZY eej\        ej]        ¦  «        dc„ ¦   «         Z^ eej_        ¦  «        dØdd„¦   «         ZY eej_        ¦  «        de„ ¦   «         Z^ eej`        ¦  «        df„ ¦   «         ZY eej`        ¦  «        dg„ ¦   «         Z^ e eja        dh¦  «        ¦  «        di„ ¦   «         Z8 e eja        dj¦  «        ¦  «        dk„ ¦   «         Z8 e eja        dl¦  «        ¦  «        dm„ ¦   «         Z8 e eja        dn¦  «        ¦  «        do„ ¦   «         Z7 e eja        dn¦  «         eja        dp¦  «        ¦  «        dq„ ¦   «         Z8 e eja        dn¦  «         eja        dp¦  «        ¦  «        dr„ ¦   «         Zb e eja        dn¦  «         eja        dp¦  «        ¦  «        ds„ ¦   «         ZI e eja        dn¦  «         eja        dp¦  «        ¦  «        dt„ ¦   «         ZU e eja        dn¦  «         eja        dp¦  «        ¦  «        dÙdu„¦   «         Zc e eja        dn¦  «         eja        dp¦  «        ¦  «        dv„ ¦   «         Zd e eja        dn¦  «         eja        dp¦  «        ¦  «        dw„ ¦   «         Ze e eja        dn¦  «         eja        dp¦  «        ¦  «        dx„ ¦   «         Zf e eja        dn¦  «         eja        dp¦  «        ¦  «        dy„ ¦   «         Zg e eja        dn¦  «         eja        dp¦  «        ¦  «        dz„ ¦   «         Zh e eja        dn¦  «         eja        dp¦  «        ¦  «        d{„ ¦   «         ZB e eja        d|¦  «        ¦  «        d}„ ¦   «         Z8d~„ Zi e eja        d|¦  «        ¦  «        d„ ¦   «         ZB e eja        d€¦  «        ¦  «        d�„ ¦   «         Zg e eja        d€¦  «        ¦  «        d‚„ ¦   «         Z8 e eja        dƒ¦  «        ¦  «        d„„ ¦   «         Z8 e eja        d…¦  «        ¦  «        d†„ ¦   «         Z8 e eja        d‡¦  «        ¦  «        dˆ„ ¦   «         Z8 e eja        d‰¦  «        ¦  «        dŠ„ ¦   «         Z8 e eja        d‹¦  «        ¦  «        dŒ„ ¦   «         Z7 e eja        d‹¦  «        ¦  «        d�„ ¦   «         Z8 e eja        dŽ¦  «        ¦  «        d�„ ¦   «         Z8 e eja        d�¦  «        ¦  «        d‘„ ¦   «         Zg e eja        d�¦  «        ¦  «        d’„ ¦   «         Z8d“„ Zj e eja        d”¦  «        ¦  «        d•„ ¦   «         Z8 e eja        d–¦  «        ¦  «        d—„ ¦   «         Z8 e eja        d˜¦  «        ¦  «        d™„ ¦   «         Z8 e eja        dš¦  «        ¦  «        d›„ ¦   «         Z8 e eja        dœ¦  «        ¦  «        d�„ ¦   «         Zg e eja        dœ¦  «        ¦  «        dž„ ¦   «         Z8 e eja        dŸ¦  «        ¦  «        d „ ¦   «         Z8d¡„ Zk e eja        d¢¦  «        ¦  «        d£„ ¦   «         Z7 e eja        d¢¦  «        ¦  «        d¤„ ¦   «         Z8 e eja        d¥¦  «        ¦  «        d¦„ ¦   «         ZB eejl        ¦  «        d§„ ¦   «         Z7 eejm        ¦  «        d¨„ ¦   «         Z7 e eja        d©¦  «        ¦  «        dª„ ¦   «         Z8 e eja        d©¦  «        ¦  «        d«„ ¦   «         Z7 e eja        d©¦  «        ¦  «        d¬„ ¦   «         ZB e eja        d­¦  «        ¦  «        d®„ ¦   «         Z7 eejn        ¦  «        d¯„ ¦   «         Z8 eejo        ¦  «        d°„ ¦   «         Z8 eejp        ¦  «        d±„ ¦   «         Z8 eejq        ¦  «        d²„ ¦   «         Z8 eejm        ¦  «        d³„ ¦   «         Z8 e eja        d­¦  «        ¦  «        d´„ ¦   «         Z8 e ejr        dµ¦  «        js        ¦  «        d¶„ ¦   «         Zt e eja        dµ¦  «        ¦  «        d·„ ¦   «         Z7 e eja        dµ¦  «        ¦  «        d¸„ ¦   «         Zg e eja        dµ¦  «        ¦  «        d¹„ ¦   «         Z8 e eja        dµ¦  «        ¦  «        dº„ ¦   «         ZB e eja        d»¦  «        ¦  «        d¼„ ¦   «         Z7 e eja        d»¦  «        ¦  «        d½„ ¦   «         Zg e eja        d»¦  «        ¦  «        d¾„ ¦   «         Z8 e eja        d¿¦  «        ¦  «        dÀ„ ¦   «         Zg e eja        dÁ¦  «        ¦  «        dÂ„ ¦   «         Zg e eja        dÃ¦  «        ¦  «        dÄ„ ¦   «         ZB e eja        dÅ¦  «        ¦  «        dÆ„ ¦   «         ZB G dÇ„ dÈeu¦  «        Zv G dÉ„ dÊeu¦  «        Zw e,dË¦  «        dÚdÌ„¦   «         Zx e,dÍ¦  «        dÎ„ ¦   «         ZydÏ„ ZzdÐ„ Z{dÑ„ Z|dÒ„ Z} e,dÓ¦  «        dÖdÔ„¦   «         Z~g dÕ¢ZdS )Ûé    )Úconfig)ÚotRound)ÚttLib)ÚotTables)ÚUSE_HARFBUZZ_REPACKER)Ú
maxCtxFont)ÚNullPen)ÚTimer)ÚmakeOutputFileName)Ú_add_methodÚ
_uniq_sort)Ú*)ÚvarStoreÚmultiVarStore)ÚNameRecordVisitorN)ÚCounterÚdefaultdict)Úreduce)Ú
MethodTypez3pyftsubset font-file [glyph...] [--option=value]...a  pyftsubset -- OpenType font subsetter and optimizer

pyftsubset is an OpenType font subsetter and optimizer, based on fontTools.
It accepts any TT- or CFF-flavored OpenType (.otf or .ttf) or WOFF (.woff)
font file. The subsetted glyph set is based on the specified glyphs
or characters, and specified OpenType layout features.

The tool also performs some size-reducing optimizations, aimed for using
subset fonts as webfonts.  Individual optimizations can be enabled or
disabled, and are enabled by default when they are safe.

Usage: a³9  

At least one glyph or one of --gids, --gids-file, --glyphs, --glyphs-file,
--text, --text-file, --unicodes, or --unicodes-file, must be specified.

Args:

font-file
  The input font file.
glyph
  Specify one or more glyph identifiers to include in the subset. Must be
  PS glyph names, or the special string '*' to keep the entire glyph set.

Initial glyph set specification
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

These options populate the initial glyph set. Same option can appear
multiple times, and the results are accummulated.

--gids=<NNN>[,<NNN>...]
  Specify comma/whitespace-separated list of glyph IDs or ranges as decimal
  numbers.  For example, --gids=10-12,14 adds glyphs with numbers 10, 11,
  12, and 14.

--gids-file=<path>
  Like --gids but reads from a file. Anything after a '#' on any line is
  ignored as comments.

--glyphs=<glyphname>[,<glyphname>...]
  Specify comma/whitespace-separated PS glyph names to add to the subset.
  Note that only PS glyph names are accepted, not gidNNN, U+XXXX, etc
  that are accepted on the command line.  The special string '*' will keep
  the entire glyph set.

--glyphs-file=<path>
  Like --glyphs but reads from a file. Anything after a '#' on any line
  is ignored as comments.

--text=<text>
  Specify characters to include in the subset, as UTF-8 string.

--text-file=<path>
  Like --text but reads from a file. Newline character are not added to
  the subset.

--unicodes=<XXXX>[,<XXXX>...]
  Specify comma/whitespace-separated list of Unicode codepoints or
  ranges as hex numbers, optionally prefixed with 'U+', 'u', etc.
  For example, --unicodes=41-5a,61-7a adds ASCII letters, so does
  the more verbose --unicodes=U+0041-005A,U+0061-007A.
  The special strings '*' will choose all Unicode characters mapped
  by the font.

--unicodes-file=<path>
  Like --unicodes, but reads from a file. Anything after a '#' on any
  line in the file is ignored as comments.

--ignore-missing-glyphs
  Do not fail if some requested glyphs or gids are not available in
  the font.

--no-ignore-missing-glyphs
  Stop and fail if some requested glyphs or gids are not available
  in the font. [default]

--ignore-missing-unicodes [default]
  Do not fail if some requested Unicode characters (including those
  indirectly specified using --text or --text-file) are not available
  in the font.

--no-ignore-missing-unicodes
  Stop and fail if some requested Unicode characters are not available
  in the font.
  Note the default discrepancy between ignoring missing glyphs versus
  unicodes.  This is for historical reasons and in the future
  --no-ignore-missing-unicodes might become default.

Other options
^^^^^^^^^^^^^

For the other options listed below, to see the current value of the option,
pass a value of '?' to it, with or without a '='. In some environments,
you might need to escape the question mark, like this: '--glyph-names\?'.

Examples::

    $ pyftsubset --glyph-names?
    Current setting for 'glyph-names' is: False
    $ pyftsubset --name-IDs=?
    Current setting for 'name-IDs' is: [0, 1, 2, 3, 4, 5, 6]
    $ pyftsubset --hinting? --no-hinting --hinting?
    Current setting for 'hinting' is: True
    Current setting for 'hinting' is: False

Output options
^^^^^^^^^^^^^^

--output-file=<path>
  The output font file. If not specified, the subsetted font
  will be saved in as font-file.subset.

--flavor=<type>
  Specify flavor of output font file. May be 'woff' or 'woff2'.
  Note that WOFF2 requires the Brotli Python extension, available
  at https://github.com/google/brotli

--with-zopfli
  Use the Google Zopfli algorithm to compress WOFF. The output is 3-8 %
  smaller than pure zlib, but the compression speed is much slower.
  The Zopfli Python bindings are available at:
  https://pypi.python.org/pypi/zopfli

--harfbuzz-repacker
  By default, we serialize GPOS/GSUB using the HarfBuzz Repacker when
  uharfbuzz can be imported and is successful, otherwise fall back to
  the pure-python serializer. Set the option to force using the HarfBuzz
  Repacker (raises an error if uharfbuzz can't be found or fails).

--no-harfbuzz-repacker
  Always use the pure-python serializer even if uharfbuzz is available.

Glyph set expansion
^^^^^^^^^^^^^^^^^^^

These options control how additional glyphs are added to the subset.

--retain-gids
  Retain glyph indices; just empty glyphs not needed in-place.

--notdef-glyph
  Add the '.notdef' glyph to the subset (ie, keep it). [default]

--no-notdef-glyph
  Drop the '.notdef' glyph unless specified in the glyph set. This
  saves a few bytes, but is not possible for Postscript-flavored
  fonts, as those require '.notdef'. For TrueType-flavored fonts,
  this works fine as long as no unsupported glyphs are requested
  from the font.

--notdef-outline
  Keep the outline of '.notdef' glyph. The '.notdef' glyph outline is
  used when glyphs not supported by the font are to be shown. It is not
  needed otherwise.

--no-notdef-outline
  When including a '.notdef' glyph, remove its outline. This saves
  a few bytes. [default]

--recommended-glyphs
  Add glyphs 0, 1, 2, and 3 to the subset, as recommended for
  TrueType-flavored fonts: '.notdef', 'NULL' or '.null', 'CR', 'space'.
  Some legacy software might require this, but no modern system does.

--no-recommended-glyphs
  Do not add glyphs 0, 1, 2, and 3 to the subset, unless specified in
  glyph set. [default]

--no-layout-closure
  Do not expand glyph set to add glyphs produced by OpenType layout
  features.  Instead, OpenType layout features will be subset to only
  rules that are relevant to the otherwise-specified glyph set.

--layout-features[+|-]=<feature>[,<feature>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of OpenType layout feature tags that will be preserved.
  Glyph variants used by the preserved features are added to the
  specified subset glyph set. By default, 'calt', 'ccmp', 'clig', 'curs',
  'dnom', 'frac', 'kern', 'liga', 'locl', 'mark', 'mkmk', 'numr', 'rclt',
  'rlig', 'rvrn', and all features required for script shaping are
  preserved. To see the full list, try '--layout-features=?'.
  Use '*' to keep all features.
  Multiple --layout-features options can be provided if necessary.
  Examples:

    --layout-features+=onum,pnum,ss01
        * Keep the default set of features and 'onum', 'pnum', 'ss01'.
    --layout-features-='mark','mkmk'
        * Keep the default set of features but drop 'mark' and 'mkmk'.
    --layout-features='kern'
        * Only keep the 'kern' feature, drop all others.
    --layout-features=''
        * Drop all features.
    --layout-features='*'
        * Keep all features.
    --layout-features+=aalt --layout-features-=vrt2
        * Keep default set of features plus 'aalt', but drop 'vrt2'.

--layout-scripts[+|-]=<script>[,<script>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of OpenType layout script tags that will be preserved. LangSys tags
  can be appended to script tag, separated by '.', for example:
  'arab.dflt,arab.URD,latn.TRK'. By default all scripts are retained ('*').

Hinting options
^^^^^^^^^^^^^^^

--hinting
  Keep hinting [default]

--no-hinting
  Drop glyph-specific hinting and font-wide hinting tables, as well
  as remove hinting-related bits and pieces from other tables (eg. GPOS).
  See --hinting-tables for list of tables that are dropped by default.
  Instructions and hints are stripped from 'glyf' and 'CFF ' tables
  respectively. This produces (sometimes up to 30%) smaller fonts that
  are suitable for extremely high-resolution systems, like high-end
  mobile devices and retina displays.

Optimization options
^^^^^^^^^^^^^^^^^^^^

--desubroutinize
  Remove CFF use of subroutinizes.  Subroutinization is a way to make CFF
  fonts smaller.  For small subsets however, desubroutinizing might make
  the font smaller.  It has even been reported that desubroutinized CFF
  fonts compress better (produce smaller output) WOFF and WOFF2 fonts.
  Also see note under --no-hinting.

--no-desubroutinize [default]
  Leave CFF subroutinizes as is, only throw away unused subroutinizes.

Font table options
^^^^^^^^^^^^^^^^^^

--drop-tables[+|-]=<table>[,<table>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of tables that will be be dropped.
  By default, the following tables are dropped:
  'BASE', 'JSTF', 'DSIG', 'EBDT', 'EBLC', 'EBSC', 'PCLT', 'LTSH'
  and Graphite tables: 'Feat', 'Glat', 'Gloc', 'Silf', 'Sill'.
  The tool will attempt to subset the remaining tables.

  Examples:

  --drop-tables-=BASE
      * Drop the default set of tables but keep 'BASE'.

  --drop-tables+=GSUB
      * Drop the default set of tables and 'GSUB'.

  --drop-tables=DSIG
      * Only drop the 'DSIG' table, keep all others.

  --drop-tables=
      * Keep all tables.

--no-subset-tables+=<table>[,<table>...]
  Add to the set of tables that will not be subsetted.
  By default, the following tables are included in this list, as
  they do not need subsetting (ignore the fact that 'loca' is listed
  here): 'gasp', 'head', 'hhea', 'maxp', 'vhea', 'OS/2', 'loca', 'name',
  'cvt ', 'fpgm', 'prep', 'VMDX', 'DSIG', 'CPAL', 'MVAR', 'cvar', 'STAT'.
  By default, tables that the tool does not know how to subset and are not
  specified here will be dropped from the font, unless --passthrough-tables
  option is passed.

  Example:

   --no-subset-tables+=FFTM
      * Keep 'FFTM' table in the font by preventing subsetting.

--passthrough-tables
  Do not drop tables that the tool does not know how to subset.

--no-passthrough-tables
  Tables that the tool does not know how to subset and are not specified
  in --no-subset-tables will be dropped from the font. [default]

--hinting-tables[-]=<table>[,<table>...]
  Specify (=), add to (+=) or exclude from (-=) the list of font-wide
  hinting tables that will be dropped if --no-hinting is specified.

  Examples:

  --hinting-tables-=VDMX
      * Drop font-wide hinting tables except 'VDMX'.
  --hinting-tables=
      * Keep all font-wide hinting tables (but strip hints from glyphs).

--legacy-kern
  Keep TrueType 'kern' table even when OpenType 'GPOS' is available.

--no-legacy-kern
  Drop TrueType 'kern' table if OpenType 'GPOS' is available. [default]

Font naming options
^^^^^^^^^^^^^^^^^^^

These options control what is retained in the 'name' table. For numerical
codes, see: http://www.microsoft.com/typography/otspec/name.htm

--name-IDs[+|-]=<nameID>[,<nameID>...]
  Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
  entry nameIDs that will be preserved. By default, only nameIDs between 0
  and 6 are preserved, the rest are dropped. Use '*' to keep all entries.

  Examples:

  --name-IDs+=7,8,9
      * Also keep Trademark, Manufacturer and Designer name entries.
  --name-IDs=
      * Drop all 'name' table entries.
  --name-IDs=*
      * keep all 'name' table entries

--name-legacy
  Keep legacy (non-Unicode) 'name' table entries (0.x, 1.x etc.).
  XXX Note: This might be needed for some fonts that have no Unicode name
  entires for English. See: https://github.com/fonttools/fonttools/issues/146

--no-name-legacy
  Drop legacy (non-Unicode) 'name' table entries [default]

--name-languages[+|-]=<langID>[,<langID>]
  Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
  langIDs that will be preserved. By default only records with langID
  0x0409 (English) are preserved. Use '*' to keep all langIDs.

--obfuscate-names
  Make the font unusable as a system font by replacing name IDs 1, 2, 3, 4,
  and 6 with dummy strings (it is still fully functional as webfont).

Glyph naming and encoding options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

--glyph-names
  Keep PS glyph names in TT-flavored fonts. In general glyph names are
  not needed for correct use of the font. However, some PDF generators
  and PDF viewers might rely on glyph names to extract Unicode text
  from PDF documents.
--no-glyph-names
  Drop PS glyph names in TT-flavored fonts, by using 'post' table
  version 3.0. [default]
--legacy-cmap
  Keep the legacy 'cmap' subtables (0.x, 1.x, 4.x etc.).
--no-legacy-cmap
  Drop the legacy 'cmap' subtables. [default]
--symbol-cmap
  Keep the 3.0 symbol 'cmap'.
--no-symbol-cmap
  Drop the 3.0 symbol 'cmap'. [default]

Other font-specific options
^^^^^^^^^^^^^^^^^^^^^^^^^^^

--recalc-bounds
    Recalculate font bounding boxes.
--no-recalc-bounds
    Keep original font bounding boxes. This is faster and still safe
    for all practical purposes. [default]
--recalc-timestamp
    Set font 'modified' timestamp to current time.
--no-recalc-timestamp
    Do not modify font 'modified' timestamp. [default]
--canonical-order
    Order tables as recommended in the OpenType standard. This is not
    required by the standard, nor by any known implementation.
--no-canonical-order
    Keep original order of font tables. This is faster. [default]
--prune-unicode-ranges
    Update the 'OS/2 ulUnicodeRange*' bits after subsetting. The Unicode
    ranges defined in the OpenType specification v1.7 are intersected with
    the Unicode codepoints specified in the font's Unicode 'cmap' subtables:
    when no overlap is found, the bit will be switched off. However, it will
    *not* be switched on if an intersection is found.  [default]
--no-prune-unicode-ranges
    Don't change the 'OS/2 ulUnicodeRange*' bits.
--prune-codepage-ranges
    Update the 'OS/2 ulCodePageRange*' bits after subsetting.  [default]
--no-prune-codepage-ranges
    Don't change the 'OS/2 ulCodePageRange*' bits.
--recalc-average-width
    Update the 'OS/2 xAvgCharWidth' field after subsetting.
--no-recalc-average-width
    Don't change the 'OS/2 xAvgCharWidth' field. [default]
--recalc-max-context
    Update the 'OS/2 usMaxContext' field after subsetting.
--no-recalc-max-context
    Don't change the 'OS/2 usMaxContext' field. [default]
--font-number=<number>
    Select font number for TrueType Collection (.ttc/.otc), starting from 0.
--pretty-svg
    When subsetting SVG table, use lxml pretty_print=True option to indent
    the XML output (only recommended for debugging purposes).

Application options
^^^^^^^^^^^^^^^^^^^

--verbose
    Display verbose information of the subsetting process.
--timing
    Display detailed timing information of the subsetting process.
--xml
    Display the TTX XML representation of subsetted font.

Example
^^^^^^^

Produce a subset containing the characters ' !"#$%' without performing
size-reducing optimizations::

  $ pyftsubset font.ttf --unicodes="U+0020-0025" \
    --layout-features=* --glyph-names --symbol-cmap --legacy-cmap \
    --notdef-glyph --notdef-outline --recommended-glyphs \
    --name-IDs=* --name-legacy --name-languages=*
zfontTools.subsetc                 óÜ   ‡— |                       dt          |¦  «        ¦  «         |rE|                     ¦   «         Š|                       dt          ˆfd„|D ¦   «         ¦  «        ¦  «         d S d S )NzGlyph names: %szGlyph IDs:   %sc              3   ó(   •K  — | ]}‰|         V — Œd S ©N© )Ú.0ÚgÚreverseGlyphMaps     €úO/granary/edev/quantum/lib/python3.11/site-packages/fontTools/subset/__init__.pyú	<genexpr>z_log_glyphs.<locals>.<genexpr>Ì  s(   øè è € Ð+OÐ+OÀ1¨O¸AÔ,>Ð+OÐ+OÐ+OÐ+OÐ+OÐ+Oó    )ÚinfoÚsortedÚgetReverseGlyphMap)ÚselfÚglyphsÚfontr   s      @r   Ú_log_glyphsr&   È  s|   ø€ Ø‡I‚IÐ¥¨¡¤Ñ0Ô0Ð0Øð QØ×1Ò1Ñ3Ô3ˆØ�	Š	Ð#¥VÐ+OÐ+OÐ+OÐ+OÈÐ+OÑ+OÔ+OÑ%OÔ%OÑPÔPÐPÐPÐPðQð Qr   zfontTools.subset.timer)Úloggerc                 ó    ‡ — ˆ fd„|D ¦   «         S )Nc                 ó"   •— i | ]}|‰|         “ŒS r   r   )r   r   Úds     €r   ú
<dictcomp>z _dict_subset.<locals>.<dictcomp>Ø  s   ø€ Ð$Ð$Ð$˜ˆAˆq�ŒtÐ$Ð$Ð$r   r   )r*   r$   s   ` r   Ú_dict_subsetr,   ×  s   ø€ Ø$Ð$Ð$Ð$˜VÐ$Ñ$Ô$Ð$r   c                 óB   ‡ ‡— t          ‰ ¦  «        Šˆˆ fd„|D ¦   «         S )Nc                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   ÚiÚcountÚls     €€r   ú
<listcomp>z _list_subset.<locals>.<listcomp>Ý  s"   ø€ Ð/Ð/Ð/�Q Q¨¢Y YˆAˆaŒD Y Y Yr   ©Úlen)r1   Úindicesr0   s   ` @r   Ú_list_subsetr6   Û  s,   øø€ Ý�‰FŒF€EØ/Ð/Ð/Ð/Ð/˜'Ð/Ñ/Ô/Ð/r   c                 óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )z3Returns ascending list of matching coverage values.c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   )r   r/   r   r$   s      €r   r2   zintersect.<locals>.<listcomp>ã  s"   ø€ Ð@Ð@Ð@‘$�!�Q°A¸°K°KˆA°K°K°Kr   )Ú	enumerater$   ©r#   r$   s    `r   Ú	intersectr;   à  s*   ø€ ð AÐ@Ð@Ð@�) D¤KÑ0Ô0Ð@Ñ@Ô@Ð@r   c                 óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )z#Returns set of intersecting glyphs.c              3   ó$   •K  — | ]
}|‰v ¯|V — Œd S r   r   ©r   r   r$   s     €r   r   z#intersect_glyphs.<locals>.<genexpr>é  s'   øè è € Ð5Ð5�Q¨¨f¨¨ˆq¨¨¨¨Ð5Ð5r   )Úsetr$   r:   s    `r   Úintersect_glyphsr@   æ  s*   ø€ õ Ð5Ð5Ð5Ð5˜$œ+Ð5Ñ5Ô5Ñ5Ô5Ð5r   c                 ób   ‡— |                       ‰¦  «        }ˆfd„| j        D ¦   «         | _        |S )z4Returns ascending list of remaining coverage values.c                 ó   •— g | ]}|‰v ¯|‘Œ	S r   r   r>   s     €r   r2   zsubset.<locals>.<listcomp>ð  s   ø€ Ð9Ð9Ð9˜¨Q°&¨[¨[�1¨[¨[¨[r   ©r;   r$   )r#   r$   r5   s    ` r   ÚsubsetrD   ì  s8   ø€ ð �nŠn˜VÑ$Ô$€GØ9Ð9Ð9Ð9˜dœkÐ9Ñ9Ô9€D„KØ€Nr   c                 ó.   ‡ — ˆ fd„|D ¦   «         ‰ _         dS )zRemaps coverage.c                 ó*   •— g | ]}‰j         |         ‘ŒS r   ©r$   ©r   r/   r#   s     €r   r2   zremap.<locals>.<listcomp>÷  s   ø€ Ð8Ð8Ð8 a�4”;˜q”>Ð8Ð8Ð8r   NrG   )r#   Úcoverage_maps   ` r   ÚremaprJ   ô  s$   ø€ ð 9Ð8Ð8Ð8¨<Ð8Ñ8Ô8€D„K€K€Kr   c                 ó¬   ‡ ‡— t          t          ˆ fd„‰D ¦   «         ¦  «        rdgng ˆfd„‰ j                             ¦   «         D ¦   «         z   ¦  «        S )z0Returns ascending list of matching class values.c              3   ó*   •K  — | ]}|‰j         vV — Œd S r   ©Ú	classDefs©r   r   r#   s     €r   r   zintersect.<locals>.<genexpr>þ  s*   øè è € Ð<Ð<°�A˜Tœ^Ð+Ð<Ð<Ð<Ð<Ð<Ð<r   r   c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   ©r   r   Úvr$   s      €r   r2   zintersect.<locals>.<listcomp>ÿ  s"   ø€ Ð
?Ð
?Ð
?‘��A°1¸°;°;ˆ1°;°;°;r   )r   ÚanyrN   Úitemsr:   s   ``r   r;   r;   ú  sn   øø€ õ ÝÐ<Ð<Ð<Ð<°VÐ<Ñ<Ô<Ñ<Ô<Ð	Dˆ!ˆˆÀ"Ø
?Ð
?Ð
?Ð
?˜œ×-Ò-Ñ/Ô/Ð
?Ñ
?Ô
?ñ	@ñô ð r   c                 ó°   ‡ ‡‡— ‰dk    rt          ˆ fd„‰D ¦   «         ¦  «        S t          ˆˆfd„‰ j                             ¦   «         D ¦   «         ¦  «        S )z%Returns set of glyphs matching class.r   c              3   ó.   •K  — | ]}|‰j         v¯|V — Œd S r   rM   rO   s     €r   r   z"intersect_class.<locals>.<genexpr>  s/   øè è € Ð@Ð@˜¨°´Ð(?Ð(?�1Ð(?Ð(?Ð(?Ð(?Ð@Ð@r   c              3   ó6   •K  — | ]\  }}|‰k    ¯|‰v ¯|V — Œd S r   r   )r   r   rR   r$   Úklasss      €€r   r   z"intersect_class.<locals>.<genexpr>  s3   øè è € ÐRÐR‘T�Q˜°q¸E²z°zÀaÈ6ÀkÀkˆqÀkÀkÀkÀkÐRÐRr   )r?   rN   rT   )r#   r$   rX   s   ```r   Úintersect_classrY     sg   øøø€ ð �‚z€zÝÐ@Ð@Ð@Ð@˜fÐ@Ñ@Ô@Ñ@Ô@Ð@ÝÐRÐRÐRÐRÐR˜Tœ^×1Ò1Ñ3Ô3ÐRÑRÔRÑRÔRÐRr   FTc                 ó8  ‡ ‡— ˆfd„‰ j                              ¦   «         D ¦   «         ‰ _         t          |rt          ˆ fd„‰D ¦   «         ¦  «        rdgng t	          ‰ j                              ¦   «         ¦  «        z   ¦  «        }|r‰                      |¦  «         |S )z,Returns ascending list of remaining classes.c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rQ   s      €r   r+   zsubset.<locals>.<dictcomp>  s$   ø€ ÐMÐMÐM™t˜q !ÀÀfÀÀ�a˜ÀÀÀr   c              3   ó*   •K  — | ]}|‰j         vV — Œd S r   rM   rO   s     €r   r   zsubset.<locals>.<genexpr>  s*   øè è € Ð&OÐ&OÀ1 q°´Ð'>Ð&OÐ&OÐ&OÐ&OÐ&OÐ&Or   r   )rN   rT   r   rS   ÚlistÚvaluesrJ   )r#   r$   rJ   Ú	useClass0r5   s   ``   r   rD   rD     s¸   øø€ ð NÐMÐMÐM t¤~×';Ò';Ñ'=Ô'=ÐMÑMÔM€D„Nõ ð ðÝ#&Ð&OÐ&OÐ&OÐ&OÈÐ&OÑ&OÔ&OÑ#OÔ#OðˆQˆCˆCàå
ˆtŒ~×$Ò$Ñ&Ô&Ñ
'Ô
'ñ	(ñô €Gð ð Ø�
Š
�7ÑÔÐØ€Nr   c                 ó\   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         dS )zRemaps classes.c                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r   ©Úindex)r   r   rR   Ú	class_maps      €r   r+   zremap.<locals>.<dictcomp>"  s+   ø€ ÐOÐOÐO±°°1�a˜Ÿš¨Ñ+Ô+ÐOÐOÐOr   N)rN   rT   )r#   rd   s    `r   rJ   rJ     s3   ø€ ð PÐOÐOÐO¸¼×8LÒ8LÑ8NÔ8NÐOÑOÔO€D„N€N€Nr   c                 ó‚   ‡— |j                              ˆfd„| j                             ¦   «         D ¦   «         ¦  «         d S )Nc              3   ó*   •K  — | ]\  }}|‰v ¯	|V — Œd S r   r   )r   r   rR   Ú
cur_glyphss      €r   r   z!closure_glyphs.<locals>.<genexpr>'  s+   øè è € ÐJÐJ™$˜!˜Q¸!¸z¸/¸/�A¸/¸/¸/¸/ÐJÐJr   )r$   ÚupdateÚmappingrT   ©r#   Úsrg   s     `r   Úclosure_glyphsrl   %  s@   ø€ à„H‡O‚OÐJÐJÐJÐJ $¤,×"4Ò"4Ñ"6Ô"6ÐJÑJÔJÑJÔJÐJÐJÐJr   c                 ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                 ó@   •— i | ]\  }}|‰j         v ¯|‰j         v ¯||“ŒS r   rG   ©r   r   rR   rk   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>,  s7   ø€ ð ð ð Ù��A°°a´h°°À1ÈÌÀ=À=ˆˆ1À=À=À=r   ©ri   rT   Úbool©r#   rk   s    `r   Úsubset_glyphsrs   *  sM   ø€ ðð ð ð Øœ×+Ò+Ñ-Ô-ðñ ô €D„Lõ �”ÑÔÐr   c                 ó€   — | j                              ¦   «         D ]#\  }}||v r|j                             |¦  «         Œ$d S r   )ri   rT   r$   rh   )r#   rk   rg   ÚglyphÚsubsts        r   rl   rl   2  sM   € àœ×*Ò*Ñ,Ô,ð #ð #‰ˆˆuØ�JÐÐØŒH�OŠO˜EÑ"Ô"Ð"øð#ð #r   c                 ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                 ód   •— i | ],\  }}|‰j         v ¯t          ˆfd „|D ¦   «         ¦  «        ¯)||“Œ-S )c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   rG   )r   Úsubrk   s     €r   r   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>>  s)   øè è € Ð >Ð >°S ¨¬ Ð >Ð >Ð >Ð >Ð >Ð >r   )r$   Úallro   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>;  sS   ø€ ð ð ð áˆAˆqØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸AÐ >Ñ >Ô >Ñ>Ô>ˆ=ð 	
ˆ1àˆ=ˆ=r   rp   rr   s    `r   rs   rs   9  sM   ø€ ðð ð ð à”L×&Ò&Ñ(Ô(ðñ ô €D„Lõ
 �”ÑÔÐr   c                 ól   ‡—  |j         j        ˆfd„| j                             ¦   «         D ¦   «         Ž  d S )Nc              3   ó*   •K  — | ]\  }}|‰v ¯	|V — Œd S r   r   )r   r   Úvlistrg   s      €r   r   z!closure_glyphs.<locals>.<genexpr>E  s+   øè è € ÐWÐW¡  5ÀqÈJÀÀ�eÀÀÀÀÐWÐWr   )r$   rh   Ú
alternatesrT   rj   s     `r   rl   rl   C  s=   ø€ à€A„H„OÐWÐWÐWÐW¨D¬O×,AÒ,AÑ,CÔ,CÐWÑWÔWÐXÐXÐXÐXr   c                 ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                 ó|   •— i | ]8\  }}|‰j         v ¯t          ˆfd „|D ¦   «         ¦  «        ¯)|ˆfd„|D ¦   «         “Œ9S )c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   rG   ©r   rR   rk   s     €r   r   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>M  s)   øè è € Ð >Ð >°1  a¤h Ð >Ð >Ð >Ð >Ð >Ð >r   c                 ó&   •— g | ]}|‰j         v ¯|‘ŒS r   rG   rƒ   s     €r   r2   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>K  s    ø€ Ð.Ð.Ð.�!  Q¤X  ˆA   r   )r$   rS   )r   r   r~   rk   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>J  sh   ø€ ð ð ð áˆAˆuØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸Ð >Ñ >Ô >Ñ>Ô>ˆ=ð 	
Ð.Ð.Ð.Ð.�uÐ.Ñ.Ô.àˆ=ˆ=r   )r   rT   rq   rr   s    `r   rs   rs   H  sM   ø€ ðð ð ð àœ×-Ò-Ñ/Ô/ðñ ô €D„Oõ
 �”Ñ Ô Ð r   c                 óp   ‡‡—  ‰j         j        ˆˆfd„| j                             ¦   «         D ¦   «         Ž  d S )Nc              3   óB   •K  — | ]\  }}|‰v ¯	ˆfd „|D ¦   «         V — ŒdS )c                 ó^   •— g | ])}t          ˆfd „|j        D ¦   «         ¦  «        ¯"|j        ‘Œ*S )c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   rG   ©r   Úcrk   s     €r   r   z6closure_glyphs.<locals>.<genexpr>.<listcomp>.<genexpr>V  s)   øè è € Ð0VÐ0VÀ1°°a´h°Ð0VÐ0VÐ0VÐ0VÐ0VÐ0Vr   )r{   Ú	ComponentÚLigGlyph©r   Úseqrk   s     €r   r2   z,closure_glyphs.<locals>.<genexpr>.<listcomp>V  s?   ø€ ÐWÐWÐW˜c­SÐ0VÐ0VÐ0VÐ0VÈÌÐ0VÑ0VÔ0VÑ-VÔ-VÐWˆSŒ\ÐWÐWÐWr   Nr   )r   r   Úseqsrg   rk   s      €€r   r   z!closure_glyphs.<locals>.<genexpr>U  sN   øè è € ð 

ð 

á��4Ø�Jˆˆð XÐWÐWÐW TÐWÑWÔWàˆˆˆð

ð 

r   )r$   rh   Ú	ligaturesrT   rj   s    ``r   rl   rl   R  sZ   øø€ à€A„H„Oð

ð 

ð 

ð 

ð 

àœ>×/Ò/Ñ1Ô1ð

ñ 

ô 

ðð ð ð r   c                 ó$  ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         ˆfd„| j                              ¦   «         D ¦   «         | _         d„ | j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   rG   ro   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>_  s&   ø€ ÐOÐOÐO™t˜q !ÀÀaÄhÀÀ�a˜ÀÀÀr   c                 ó4   •— i | ]\  }}|ˆfd „|D ¦   «         “ŒS )c                 óp   •— g | ]2}|j         ‰j        v ¯t          ˆfd „|j        D ¦   «         ¦  «        ¯0|‘Œ3S )c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   rG   r‰   s     €r   r   z6subset_glyphs.<locals>.<dictcomp>.<listcomp>.<genexpr>d  s)   øè è € Ð/UÐ/UÀ!°°Q´X°Ð/UÐ/UÐ/UÐ/UÐ/UÐ/Ur   )rŒ   r$   r{   r‹   r�   s     €r   r2   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>a  sV   ø€ ð 
ð 
ð 
àØŒ|˜qœxÐ'Ð'­CÐ/UÐ/UÐ/UÐ/UÀsÄ}Ð/UÑ/UÔ/UÑ,UÔ,UÐ'ð à'Ð'Ð'r   r   )r   r   r�   rk   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>`  sU   ø€ ð ð ð ñ ˆAˆtð 	
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ðð ð r   c                 ó   — i | ]
\  }}|¯||“ŒS r   r   )r   r   rR   s      r   r+   z!subset_glyphs.<locals>.<dictcomp>h  s#   € ÐCÐCÐC™t˜q !ÀÐC�a˜ÐCÐCÐCr   )r�   rT   rq   rr   s    `r   rs   rs   ]  sœ   ø€ àOÐOÐOÐO t¤~×';Ò';Ñ'=Ô'=ÐOÑOÔO€D„Nðð ð ð ð ”~×+Ò+Ñ-Ô-ðñ ô €D„Nð DÐC t¤~×';Ò';Ñ'=Ô'=ÐCÑCÔC€D„NÝ�”ÑÔÐr   c                 ó  ‡ ‡— ‰ j         dk    rn‰ j                             |¦  «        }|r(t          ˆfd„‰ j        ‰ j        z   D ¦   «         ¦  «        sd S ‰j                             ˆ fd„|D ¦   «         ¦  «         d S J d‰ j         z  ¦   «         ‚)Né   c              3   óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r   rC   r‰   s     €r   r   z!closure_glyphs.<locals>.<genexpr>p  sE   øè è € ð "
ð "
àð �KŠK˜œÑ!Ô!ð"
ð "
ð "
ð "
ð "
ð "
r   c              3   ó2   •K  — | ]}‰j         |         V — Œd S r   )Ú
SubstituterH   s     €r   r   z!closure_glyphs.<locals>.<genexpr>u  s*   øè è € Ð<Ð<¨q˜œ¨Ô*Ð<Ð<Ð<Ð<Ð<Ð<r   r   úunknown format: %s)ÚFormatÚCoverager;   r{   ÚLookAheadCoverageÚBacktrackCoverager$   rh   )r#   rk   rg   r5   s   ``  r   rl   rl   l  s¼   øø€ à„{�aÒÐØ”-×)Ò)¨*Ñ5Ô5ˆØð 	�cð "
ð "
ð "
ð "
àÔ+¨dÔ.DÑDð"
ñ "
ô "
ñ 
ô 
ð 	ð ˆFØ	Œ�ŠÐ<Ð<Ð<Ð<°GÐ<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ó  ‡— | j         dk    râ| j                             ‰j        ¦  «        }t	          | j        |¦  «        | _        ˆfd„t          | j        ¦  «        D ¦   «         }t	          | j        |¦  «        | _        | j                             |¦  «         t          | j        ¦  «        | _	        t          | j	        o't          ˆfd„| j        | j        z   D ¦   «         ¦  «        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   c                 ó,   •— g | ]\  }}|‰j         v ¯|‘ŒS r   rG   )r   r/   rz   rk   s      €r   r2   z!subset_glyphs.<locals>.<listcomp>€  s$   ø€ ÐQÐQÐQ™˜˜CÀÈÌÀÀ�1ÀÀÀr   c              3   óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r   ©rD   r$   r‰   s     €r   r   z subset_glyphs.<locals>.<genexpr>†  sE   øè è € ð ð àð —’˜œÑ"Ô"ðð ð ð ð ð r   r   rœ   )r�   rž   rD   r$   r6   r›   r9   rJ   r4   Ú
GlyphCountrq   r{   rŸ   r    ©r#   rk   r5   s    ` r   rs   rs   z  s	  ø€ à„{�aÒÐØ”-×&Ò& q¤xÑ0Ô0ˆÝ& t¤¸Ñ@Ô@ˆŒàQÐQÐQÐQ¥9¨T¬_Ñ#=Ô#=ÐQÑQÔQˆÝ& t¤¸Ñ@Ô@ˆŒØŒ×Ò˜GÑ$Ô$Ð$Ý˜dœoÑ.Ô.ˆŒÝØŒOð Ýð ð ð ð àÔ/°$Ô2HÑHðñ ô ñ ô ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ó   — | j         dv S )N©r˜   é   é   )ÚDeltaFormat©r#   s    r   Ú
is_hintingr­   �  s   € àÔ˜yÐ(Ð(r   c                 ó~   — dD ]9}t          | |d ¦  «        }|�$|                     ¦   «         rt          | |¦  «         Œ:d S )N)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDevice)Úgetattrr­   Údelattr©r#   ÚnamerR   s      r   Úprune_hintsr·   ”  sN   € àHð  ð  ˆÝ�D˜$ Ñ%Ô%ˆØˆ=˜QŸ\š\™^œ^ˆ=Ý�D˜$ÑÔÐøð ð  r   c                 óš  ‡‡— | j         dk    r,t          | j                             |j        ¦  «        ¦  «        S | j         dk    rv| j                             |j        ¦  «        }| j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         | _        t          | j        ¦  «        | _        t          | j        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   r©   c                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r/   r0   r^   s     €€r   r2   z!subset_glyphs.<locals>.<listcomp>¤  s"   ø€ Ð>Ð>Ð> A°A¸²I°I�f˜Q”i°I°I°Ir   r   rœ   )r�   r4   rž   rD   r$   ÚValueÚ
ValueCountrq   )r#   rk   r5   r0   r^   s      @@r   rs   rs   œ  sº   øø€ à„{�aÒÐÝ�4”=×'Ò'¨¬Ñ1Ô1Ñ2Ô2Ð2Ø	Œ˜Ò	Ð	Ø”-×&Ò& q¤xÑ0Ô0ˆØ”ˆÝ�F‘”ˆØ>Ð>Ð>Ð>Ð>¨Ð>Ñ>Ô>ˆŒ
Ý˜dœj™/œ/ˆŒÝ�D”OÑ$Ô$Ð$à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óš  ‡ — ‰ j         €‰ j        dk    sJ ‚dS ‰ j        dk    r?|j        s‰ j                              ¦   «          ‰ j                              ¦   «         ‰ _        n–‰ j        dk    r‹d ‰ j         v r.‰ j        dk    sJ ‚t          d„ ‰ j         D ¦   «         ¦  «        sJ ‚nT|j        s‰ j         D ]}|                     ¦   «          Œt          t          j	        d„ ‰ j         D ¦   «         d¦  «        ‰ _        ‰ j        dk    rHt          ˆ fd„‰ j         D ¦   «         ¦  «        r(d‰ _        ‰ j        dk    r‰ j         d         nd ‰ _         ‰ `
dS )Nr   Tr˜   r©   c              3   ó   K  — | ]}|d u V — Œ	d S r   r   ©r   rR   s     r   r   z$prune_post_subset.<locals>.<genexpr>¹  s&   è è € Ð5Ð5 Q�q˜D�yÐ5Ð5Ð5Ð5Ð5Ð5r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )ÚgetEffectiveFormatr¾   s     r   r2   z%prune_post_subset.<locals>.<listcomp>¿  s$   € ÐHÐHÐH¸˜Q×1Ò1Ñ3Ô3ÐHÐHÐHr   c              3   ó:   •K  — | ]}|‰j         d          k    V — ŒdS ©r   N)rº   )r   rR   r#   s     €r   r   z$prune_post_subset.<locals>.<genexpr>Ã  s.   øè è € ÐGÐG°q  T¤Z°¤]Ò 2ÐGÐGÐGÐGÐGÐGr   )rº   ÚValueFormatr�   Úhintingr·   rÀ   r{   r   ÚintÚ__or__r»   )r#   r%   ÚoptionsrR   s   `   r   Úprune_post_subsetrÈ   «  sx  ø€ à„zÐØÔ 1Ò$Ð$Ð$Ð$Øˆtð „{�aÒÐØŒð 	%ØŒJ×"Ò"Ñ$Ô$Ð$Øœ:×8Ò8Ñ:Ô:ˆÔÐØ	Œ˜Ò	Ð	Ø�4”:ÐÐØÔ# qÒ(Ð(Ð(Ð(ÝÐ5Ð5¨$¬*Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5à”?ð $Øœð $ð $�AØ—M’M‘O”O�O�OÝ%Ý”
ÐHÐH¸T¼ZÐHÑHÔHÈ!ñ ô  ˆDÔð
 „{�aÒÐ�CÐGÐGÐGÐG¸D¼JÐGÑGÔGÑGÔGÐØˆŒØ&*Ô&6¸!Ò&;Ð&;�T”Z ”]�]ÀˆŒ
ØˆOàˆ4r   c                 ó‚  ‡ ‡‡‡‡— ‰ j         dk    �r‰ j                             ‰j        ¦  «        }‰ j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         ‰ _        ‰ j        D ]3}ˆfd„|j        D ¦   «         |_        t          |j        ¦  «        |_        Œ4d„ t          ‰ j        ¦  «        D ¦   «         }‰ j         	                    |¦  «         t          ‰ j        |¦  «        ‰ _        t          ‰ j        ¦  «        ‰ _        t          ‰ j        ¦  «        S ‰ j         dk    �rˆ fd„‰ j                             ‰j                             ‰ j        j        ¦  «        d¬¦  «        D ¦   «         }ˆ fd	„‰ j                             ‰j        dd
¬¦  «        D ¦   «         }ˆ fd„|D ¦   «         ‰ _        ‰ j        D ]Šˆfd„|D ¦   «         ‰_        Œt          |¦  «        ‰ _        t          |¦  «        ‰ _        t          ‰ j        o)‰ j        dk    o‰ j                             ‰j        ¦  «        ¦  «        S J d‰ j         z  ¦   «         ‚)Nr˜   c                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r/   r0   Úpairss     €€r   r2   z!subset_glyphs.<locals>.<listcomp>Ñ  s"   ø€ Ð?Ð?Ð? Q°Q¸²Y°Y˜˜aœ°Y°Y°Yr   c                 ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚSecondGlyphr$   )r   Úrrk   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>Ó  s.   ø€ ð !ð !ð !Ø°´ÀÄÐ0IÐ0I�Ð0IÐ0IÐ0Ir   c                 ó&   — g | ]\  }}|j         ¯|‘ŒS r   )ÚPairValueCount)r   r/   Úps      r   r2   z!subset_glyphs.<locals>.<listcomp>Ø  s$   € ÐMÐMÐM™˜˜A¸AÔ<LÐM�1ÐMÐMÐMr   r©   c                 ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )ÚClass1Count©r   rŠ   r#   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>Þ  s5   ø€ ð 
ð 
ð 
àð �4Ô#Ò#Ð#ð	 ð $Ð#Ð#r   T©rJ   c                 ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )ÚClass2CountrÔ   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>å  s1   ø€ ð 
ð 
ð 
àØ�4Ô#Ò#Ð#ð à#Ð#Ð#r   F)rJ   r_   c                 ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass1RecordrH   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>ê  s!   ø€ ÐFÐFÐF°a˜TÔ.¨qÔ1ÐFÐFÐFr   c                 ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass2Record©r   r/   rŠ   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>ì  s    ø€ ÐDÐDÐD°A˜aœn¨QÔ/ÐDÐDÐDr   r   rœ   )r�   rž   rD   r$   ÚPairSetr4   ÚPairValueRecordrÐ   r9   rJ   r6   ÚPairSetCountrq   Ú	ClassDef1ÚintersectionÚ	ClassDef2rÙ   rÛ   rÓ   r×   )	r#   rk   r5   rÑ   Ú
class1_mapÚ
class2_maprŠ   r0   rË   s	   ``    @@@r   rs   rs   Ë  sˆ  øøøøø€ à„{�aÒÑØ”-×&Ò& q¤xÑ0Ô0ˆØ”ˆÝ�E‘
”
ˆØ?Ð?Ð?Ð?Ð?¨'Ð?Ñ?Ô?ˆŒØ”ð 	6ð 	6ˆAð!ð !ð !ð !ØÔ,ð!ñ !ô !ˆAÔõ  # 1Ô#4Ñ5Ô5ˆAÔÐàMÐM¥¨4¬<Ñ!8Ô!8ÐMÑMÔMˆØŒ×Ò˜GÑ$Ô$Ð$Ý# D¤L°'Ñ:Ô:ˆŒÝ ¤Ñ-Ô-ˆÔÝ�DÔ%Ñ&Ô&Ð&Ø	Œ˜Ò	Ñ	ð
ð 
ð 
ð 
à”^×*Ò*Ø”×%Ò% d¤mÔ&:Ñ;Ô;À4ð +ñ ô ð
ñ 
ô 
ˆ
ð
ð 
ð 
ð 
à”^×*Ò*¨1¬8¸4È5Ð*ÑQÔQð
ñ 
ô 
ˆ
ð
 GÐFÐFÐF¸:ÐFÑFÔFˆÔØÔ"ð 	Eð 	EˆAØDÐDÐDÐD¸ÐDÑDÔDˆAŒNˆNÝ˜z™?œ?ˆÔÝ˜z™?œ?ˆÔåØÔð /ØÔ! AÒ%ð/à”×$Ò$ Q¤XÑ.Ô.ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óò  — |j         sÕdddœ| j                 \  }}dx| _        | _        t	          | |¦  «        D ]£}t	          ||¦  «        D ]�}|j        r@|j                             ¦   «          | xj        |j                             ¦   «         z  c_        |j        r@|j                             ¦   «          | xj        |j                             ¦   «         z  c_        Œ‘Œ¤t          | j        | j        z  ¦  «        S )N)rÝ   rÞ   )rÙ   rÛ   ©r˜   r©   r   )
rÄ   r�   ÚValueFormat1ÚValueFormat2r³   ÚValue1r·   rÀ   ÚValue2rq   )r#   r%   rÇ   Úattr1Úattr2ÚrowrÎ   s          r   rÈ   rÈ   ù  s  € àŒ?ð Gà-Ø/ð
ð 
ð Œ+ô‰ˆˆuð
 12Ð1ˆÔ˜DÔ-Ý˜4 Ñ'Ô'ð 	Gð 	GˆCÝ˜S %Ñ(Ô(ð Gð G�Ø”8ð GØ”H×(Ò(Ñ*Ô*Ð*ØÐ%Ô%¨¬×)DÒ)DÑ)FÔ)FÑFÐ%Ô%Ø”8ð GØ”H×(Ò(Ñ*Ô*Ð*ØÐ%Ô%¨¬×)DÒ)DÑ)FÔ)FÑFÐ%Ô%øðGõ �Ô! DÔ$5Ñ5Ñ6Ô6Ð6r   c                 ó,  ‡‡— | j         dk    rv| j                             |j        ¦  «        }| j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         | _        t          | j        ¦  «        | _        t          | j        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   c                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r/   r0   Úrecordss     €€r   r2   z!subset_glyphs.<locals>.<listcomp>  s"   ø€ ÐIÐIÐI¨q¸qÀ5ºy¸y ¨¤
¸y¸y¸yr   r   rœ   )r�   rž   rD   r$   ÚEntryExitRecordr4   ÚEntryExitCountrq   )r#   rk   r5   r0   rð   s      @@r   rs   rs     s”   øø€ à„{�aÒÐØ”-×&Ò& q¤xÑ0Ô0ˆØÔ&ˆÝ�G‘”ˆØIÐIÐIÐIÐI°GÐIÑIÔIˆÔÝ! $Ô"6Ñ7Ô7ˆÔÝ�DÔ'Ñ(Ô(Ð(à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óô   — | j         dk    r	d| _         d S | j         dk    rTdD ]:}t          | |d ¦  «        }|�%|                     ¦   «         rt          | |d ¦  «         Œ;| j        €| j        €d| _         d S d S d S d S )Nr©   r˜   rª   )ÚXDeviceTableÚYDeviceTable)r�   r³   r­   Úsetattrrô   rõ   rµ   s      r   r·   r·     s�   € à„{�aÒÐØˆŒˆˆØ	Œ˜Ò	Ð	Ø4ð 	*ð 	*ˆDÝ˜˜d DÑ)Ô)ˆAØˆ} §¢¡¤ˆ}Ý˜˜d DÑ)Ô)Ð)øØÔÐ$¨Ô):Ð)BØˆDŒKˆKˆKð 
Ð	ð
 %Ð$Ð)BÐ)Br   c                 ó¨   — |j         sJ| j        D ]B}|j        r|j                             ¦   «          |j        r|j                             ¦   «          ŒCdS ©NT)rÄ   rñ   ÚEntryAnchorr·   Ú
ExitAnchor)r#   r%   rÇ   Úrecs       r   rÈ   rÈ   (  s`   € àŒ?ð -ØÔ'ð 	-ð 	-ˆCØŒð .Ø”×+Ò+Ñ-Ô-Ð-ØŒ~ð -Ø”×*Ò*Ñ,Ô,Ð,øØˆ4r   c                 óJ  — | j         dk    �r†| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        | j	                             |j        ¦  «        }t	          | j
        j        |¦  «        | j
        _        t          | j
        j        ¦  «        | j
        _        t          d„ | j        j        D ¦   «         ¦  «        }t          |¦  «        | _        | j        j        D ]!}|                     |j        ¦  «        |_        Œ"| j
        j        D ]}t	          |j        |¦  «        |_        Œt%          | j        o| j        j        o| j
        j        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   c              3   ó$   K  — | ]}|j         V — Œd S r   ©ÚClassr¾   s     r   r   z subset_glyphs.<locals>.<genexpr>A  ó$   è è € Ð"NÐ"N¨q 1¤7Ð"NÐ"NÐ"NÐ"NÐ"NÐ"Nr   r   rœ   )r�   ÚMarkCoveragerD   r$   r6   Ú	MarkArrayÚ
MarkRecordr4   Ú	MarkCountÚBaseCoverageÚ	BaseArrayÚ
BaseRecordÚ	BaseCountr   Ú
ClassCountrc   rÿ   Ú
BaseAnchorrq   )r#   rk   Úmark_indicesÚbase_indicesÚclass_indicesÚmÚbs          r   rs   rs   3  sx  € à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ ØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ å"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆÝ˜mÑ,Ô,ˆŒØ”Ô*ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØ”Ô*ð 	Eð 	EˆAÝ'¨¬°mÑDÔDˆAŒLˆLÝØŒOÐU ¤Ô 8ÐU¸T¼^Ô=Uñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óÐ   — |j         s^| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#dS rø   )rÄ   r  r  Ú
MarkAnchorr·   r  r  r
  )r#   r%   rÇ   r  r  Úas         r   rÈ   rÈ   N  s†   € àŒ?ð $Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØ”Ô*ð 	$ð 	$ˆAØ”\ð $ð $�Øð $Ø—M’M‘O”O�Oøð$ð ˆ4r   c                 ód  — | j         dk    �r“| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        | j	                             |j        ¦  «        }t	          | j
        j        |¦  «        | j
        _        t          | j
        j        ¦  «        | j
        _        t          d„ | j        j        D ¦   «         ¦  «        }t          |¦  «        | _        | j        j        D ]!}|                     |j        ¦  «        |_        Œ"| j
        j        D ])}|€Œ|j        D ]}t	          |j        |¦  «        |_        ŒŒ*t'          | j        o| j        j        o| j
        j        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   c              3   ó$   K  — | ]}|j         V — Œd S r   rþ   r¾   s     r   r   z subset_glyphs.<locals>.<genexpr>i  r   r   r   rœ   )r�   r  rD   r$   r6   r  r  r4   r  ÚLigatureCoverageÚLigatureArrayÚLigatureAttachÚLigatureCountr   r	  rc   rÿ   ÚComponentRecordÚLigatureAnchorrq   )r#   rk   r  Úligature_indicesr  r  r1   rŠ   s           r   rs   rs   [  s«  € à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ ØÔ0×7Ò7¸¼ÑAÔAÐÝ,8ØÔÔ-Ð/?ñ-
ô -
ˆÔÔ)õ ,/¨tÔ/AÔ/PÑ+QÔ+QˆÔÔ(å"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆÝ˜mÑ,Ô,ˆŒØ”Ô*ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØÔ#Ô2ð 	Qð 	QˆAØˆyØØÔ&ð Qð Q�Ý#/°Ô0@À-Ñ#PÔ#P�Ô Ð ðQåØŒOð 1Ø”Ô(ð1àÔ"Ô0ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óê   — |j         sk| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]/}|€Œ|j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#Œ0dS rø   )	rÄ   r  r  r  r·   r  r  r  r  )r#   r%   rÇ   r  r1   rŠ   r  s          r   rÈ   rÈ   {  s§   € àŒ?ð 
(Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØÔ#Ô2ð 	(ð 	(ˆAØˆyØØÔ&ð (ð (�ØÔ)ð (ð (�AØð (ØŸš™œ˜øð(ð(ð ˆ4r   c                 óJ  — | j         dk    �r†| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        | j	                             |j        ¦  «        }t	          | j
        j        |¦  «        | j
        _        t          | j
        j        ¦  «        | j
        _        t          d„ | j        j        D ¦   «         ¦  «        }t          |¦  «        | _        | j        j        D ]!}|                     |j        ¦  «        |_        Œ"| j
        j        D ]}t	          |j        |¦  «        |_        Œt#          | j        o| j        j        o| j
        j        ¦  «        S J d| j         z  ¦   «         ‚)Nr˜   c              3   ó$   K  — | ]}|j         V — Œd S r   rþ   r¾   s     r   r   z subset_glyphs.<locals>.<genexpr>™  s$   è è € Ð"OÐ"O¨q 1¤7Ð"OÐ"OÐ"OÐ"OÐ"OÐ"Or   r   rœ   )r�   ÚMark1CoveragerD   r$   r6   Ú
Mark1Arrayr  r4   r  ÚMark2CoverageÚ
Mark2ArrayÚMark2Recordr   r	  rc   rÿ   ÚMark2Anchorrq   )r#   rk   Úmark1_indicesÚmark2_indicesr  r  r  s          r   rs   rs   ‹  sx  € à„{�aÒÑØÔ*×1Ò1°!´(Ñ;Ô;ˆÝ%1ØŒOÔ&¨ñ&
ô &
ˆŒÔ"õ %(¨¬Ô(BÑ$CÔ$CˆŒÔ!ØÔ*×1Ò1°!´(Ñ;Ô;ˆÝ&2ØŒOÔ'¨ñ'
ô '
ˆŒÔ#õ %(¨¬Ô(CÑ$DÔ$DˆŒÔ!å"Ð"OÐ"O°D´OÔ4NÐ"OÑ"OÔ"OÑOÔOˆÝ˜mÑ,Ô,ˆŒØ”Ô+ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØ”Ô,ð 	Gð 	GˆAÝ(¨¬¸ÑFÔFˆAŒMˆMÝØŒOÐW ¤Ô 9ÐW¸d¼oÔ>Wñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óÐ   — |j         s^| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#dS rø   )rÄ   r   r  r  r·   r"  r#  r$  )r#   r%   rÇ   r  r  s        r   rÈ   rÈ   ¦  s†   € àŒ?ð $Ø”Ô+ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØ”Ô,ð 	$ð 	$ˆAØ”]ð $ð $�Øð $Ø—M’M‘O”O�Oøð$ð ˆ4r   c                 ó   — d S r   r   ©r#   Úlookup_indicess     r   Úsubset_lookupsr+  ³  s	   € ð 	€Dr   c                 ó   — g S r   r   r¬   s    r   Úcollect_lookupsr-  Ä  s	   € ð €Ir   c                 ó   — dS rø   r   ©r#   r%   rÇ   s      r   rÈ   rÈ   Õ  s	   € ð ˆ4r   c                 ó   — dS )NFr   r¬   s    r   Úmay_have_non_1to1r1  ä  s	   € ð ˆ5r   c                 ó   — dS rø   r   r¬   s    r   r1  r1  ë  s	   € ð ˆ4r   c                 ó(  —  G d„ dt           ¦  «        }| j        dvrd S t          | j        d¦  «        si | j        _        | j        | j        j        vr* || j        | j        ¦  «        }|| j        j        | j        <   | j        j        | j                 S )Nc                   ó   — e Zd Zd„ ZdS )ú0__subset_classify_context.<locals>.ContextHelperc                 óÒ  — |j                              d¦  «        rd}d}nd}d}|j                              d¦  «        rd}d}d}nd}d}d}||z   }|| _        || _        || _        || _        || _        || _        |d	z   | _	        |dk    rd
„ }	d„ }
d„ }d„ }d }d }d„ }d„ }d„ }d„ }nS|dk    rd„ }	d„ }
d„ }d„ }d„ }d„ }d„ }d„ }d„ }d„ }n.|dk    rd„ }	d„ }
d }d }d }d }d„ }d „ }d!„ }d"„ }nJ d#|z  ¦   «         ‚|r$|
| _
        || _        || _        || _        || _        n#|	| _
        || _        || _        || _        || _        |dk    r2|d$z   | _        |d%z   | _        |d&z   | _        |d'z   | _        d(„ | _        d S |dk    rS|d)z   | _        |d*z   | _        |d+z   | _        |d,z   | _        d-„ | _        |rd.nd/| _        |rdnd| _        |rd0nd1| _        d S |dk    r|rd2nd3| _        d S d S )4NÚSubstÚSubÚPosÚChainr˜   rª   Ú r   ÚLookupRecordc                 ó   — | j         S r   ©rž   ©rÎ   s    r   ú<lambda>zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   €  Q¤Z€ r   c                 ó   — | j         S r   r>  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   € ¨!¬*€ r   c                 ó   — dS )Nr   r   r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s   € ¨€ r   c                 ó   — dS )N)NNNr   r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s   € Ð-?€ r   c                 ó   — | j         fS r   )ÚInputr?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó
   €  a¤g Z€ r   c                 ó*   — | j         | j        | j        fS r   ©Ú	BacktrackrG  Ú	LookAheadr?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   € ¨1¬;¸¼ÀÄÐ*M€ r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó:   K  — | ]}t          |¦  «        d z   V — ŒdS ©r˜   Nr3   ©r   Úxs     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>#  ó,   è è € Ð&=Ð&=°a¥s¨1¡v¤v°¡zÐ&=Ð&=Ð&=Ð&=Ð&=Ð&=r   )rG  r¥   ©rÎ   r*   s     r   ÚSetRuleDatazN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData!  ó&   € Ø!"‘J�Q”WØ&=Ð&=¸1Ð&=Ñ&=Ô&=‘O�Q”\�\�\r   c                 óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S ©Nr   r˜   r©   ©rK  rG  rL  r4   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountrT  s     r   ÚChainSetRuleDatazS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData%  ó\   € Ø:;Ñ7�Q”[ !¤'¨1¬;õ
 ˜Q˜qœT™œ¥C¨¨!¬¡I¤I°¡Mµ3°q¸´t±9´9ð	ØÔ-ØÔ)ØÔ-Ð-Ð-r   r©   c                 ó   — | j         S r   r>  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>.  rA  r   c                 ó   — | j         S r   r>  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>/  rC  r   c                 ó   — | j         fS r   ©ÚClassDefr?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>0  s
   € ¨¬¨€ r   c                 ó*   — | j         | j        | j        fS r   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefr?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>1  s   € ØÔ'Ø”OØÔ'ð.€ r   c                 ó   — |\  | _         d S r   rb  rT  s     r   ÚSetContextDatazQ__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetContextData7  s   € Ø$%‘M�Q”Z�Z�Zr   c                 ó0   — |\  | _         | _        | _        d S r   re  rT  s     r   ÚSetChainContextDatazV__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetChainContextData:  s   € ØRSÑO�QÔ(¨!¬/¸1Ô;NÐ;NÐ;Nr   c                 ó   — | j         fS r   rþ   r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>=  rH  r   c                 ó*   — | j         | j        | j        fS r   rJ  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>>  rM  r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó:   K  — | ]}t          |¦  «        d z   V — ŒdS rP  r3   rQ  s     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>B  rS  r   )rÿ   r¥   rT  s     r   rU  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData@  rV  r   c                 óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S rX  rY  rT  s     r   r]  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataD  r^  r   c                 ó   — | j         d         S ©Nr   r>  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>M  s   €  Q¤Z°¤]€ r   c                 ó   — | j         d         S rs  )ÚInputCoverager?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>N  s   € ¨!¬/¸!Ô*<€ r   c                 ó   — | j         S r   r>  r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>S  rA  r   c                 ó0   — | j         | j        z   | j        z   S r   )r    ru  rŸ   r?  s    r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>T  s   € ØÔ'¨!¬/Ñ9¸AÔ<OÑOð r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r3   rQ  s     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>Z  s(   è è € Ð&9Ð&9°!¥s¨1¡v¤vÐ&9Ð&9Ð&9Ð&9Ð&9Ð&9r   )rž   r¥   rT  s     r   rU  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataX  s&   € Ø$%‘M�Q”ZØ&9Ð&9°qÐ&9Ñ&9Ô&9‘O�Q”\�\�\r   c                 ón   — |\  | _         | _        | _        d„ |D ¦   «         \  | _        | _        | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r3   rQ  s     r   r   zf__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>b  s(   è è € Ð+Ð+ A�˜Q™œÐ+Ð+Ð+Ð+Ð+Ð+r   )r    ru  rŸ   rZ  r[  r\  rT  s     r   r]  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData\  sF   € ØRSÑO�QÔ(¨!¬/¸1Ô;Nð
 ,Ð+¨Ð+Ñ+Ô+ñ	ØÔ-ØÔ)ØÔ-Ð-Ð-r   rœ   ÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                 ó   — || v r|gng S r   r   ©r$   rŠ   rÎ   s      r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>y  s   € ¸QÀ&¸[¸[°q°c°cÈb€ r   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                 óx   — |r|                      | |¦  «        n"|dk    rt          | ¦  «        nt          ¦   «         S rs  )rY   r?   r�  s      r   r@  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s=   € àð<�A×%Ò% f¨aÑ0Ô0Ð0à)*¨aª¨�#˜f™+œ+˜+µS±U´Uð r   rg  rc  rG  rÿ   ru  rž   )Ú__name__ÚendswithÚ
startswithÚTypÚTyper:  ÚChainTypÚInputIdxÚDataLenr<  rž   ÚContextDatarj  ÚRuleDatarU  r|  r}  r~  r  Ú	Intersectrc  ÚClassDefIndexrG  )r#   rX   r�   rŠ  r‹  r:  r�  rŽ  rŒ  rž   ÚChainCoverager�  ÚChainContextDatarj  rl  r�  ÚChainRuleDatarU  r]  s                      r   Ú__init__z9__subset_classify_context.<locals>.ContextHelper.__init__ý  sW  € ØŒ~×&Ò& wÑ/Ô/ð Ø�Ø��à�Ø�ØŒ~×(Ò(¨Ñ1Ô1ð Ø�Ø�Ø��à�Ø�Ø�Ø˜s‘{ˆHàˆDŒHØˆDŒIØˆDŒJØ$ˆDŒMØ$ˆDŒMØ"ˆDŒLà $ ~Ñ 5ˆDÔà˜Š{ˆ{Ø/Ð/�Ø 4Ð 4�Ø/Ð/�Ø#?Ð#?Ð Ø!%�Ø&*Ð#Ø/Ð/�Ø MÐ M�ð>ð >ð >ð>ð >ð >ð >ð ˜1’�Ø/Ð/�Ø 4Ð 4�Ø5Ð5�ð$ð $Ð ð&ð &ð &ðTð Tð Tð 0Ð/�Ø MÐ M�ð>ð >ð >ð>ð >ð >ð >ð ˜1’�Ø2Ð2�Ø <Ð <�Ø"�Ø#'Ð Ø!%�Ø&*Ð#Ø/Ð/�ð!ð !�ð:ð :ð :ð,ð ,ð ,ð ,ð 8Ð.°Ñ7Ñ7Ô7Ð7àð /Ø -�”Ø#3�Ô Ø&9�Ô#Ø -�”Ø#3�Ô Ð à (�”Ø#.�Ô Ø&4�Ô#Ø (�”Ø#.�Ô à˜Š{ˆ{Ø$ vÑ-�”	Ø!)¨KÑ!7�”Ø'¨)Ñ3�”Ø$,¨~Ñ$=�Ô!Ø!PÐ!P�”��Ø˜1’�Ø$ {Ñ2�”	Ø!)Ð,<Ñ!<�”Ø'¨*Ñ4�”Ø$,¨Ñ$>�Ô!ð"ð "�”ð 49Ð H  ¸j�”Ø*/Ð%6 Q Q°Q�Ô"Ø(-Ð:˜W˜W°7�”
�
�
Ø˜1’�Ø05ÐE˜_˜_¸:�”
�
�
ð �r   N)r‡  Ú
__module__Ú__qualname__r–  r   r   r   ÚContextHelperr5  ü  s-   € € € € € ðL	Fð L	Fð L	Fð L	Fð L	Fr   r™  r¨   Ú_subset__ContextHelpers)Úobjectr�   ÚhasattrÚ	__class__rš  )r#   r™  Úhelpers      r   Ú__subset_classify_contextrŸ  õ  sº   € ðMFð MFð MFð MFð MF�ñ MFô MFð MFð^ „{˜)Ð#Ð#ØˆtÝ�4”>Ð#<Ñ=Ô=ð 4Ø13ˆŒÔ.Ø„{˜$œ.Ô@Ð@Ð@Ø�˜tœ~¨t¬{Ñ;Ô;ˆØ>DˆŒÔ.¨t¬{Ñ;ØŒ>Ô1°$´+Ô>Ð>r   c                 óè  ‡‡— |                       ¦   «         Š‰                     | ¦  «                             |¦  «        }|sg S ‰                     | ¦  «                             |¦  «        }| j        dk    �rÖ‰                     | ¦  «        }t          | ‰j        ¦  «        }t          | ‰j        ¦  «        }|D �]‘}||k    s||         sŒt          ||         ‰j	        ¦  «        D �]b}|sŒt          ˆˆfd„t          |‰                     |¦  «        ¦  «        D ¦   «         ¦  «        sŒDt          ¦   «         }	t          |‰j        ¦  «        D ]ú}
|
sŒ|
j        }||	v rd }nS|dk    r/t!          ‰                     | ¦  «        j        |         g¦  «        }nt!          |j        |dz
           g¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         r8|	                     t5          |t7          |j        ¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         Œû�Œd�Œ“d S | j        dk    �r+t          | ‰j        ¦  «        }|                     |¦  «        }‰                     | ¦  «        }t          | ‰j        ¦  «        }t          | ‰j        ¦  «        }|D �]¼}||k    s||         sŒt          ||         ‰j	        ¦  «        D �]�}|sŒt          ˆˆfd„t          |‰                     |¦  «        ¦  «        D ¦   «         ¦  «        sŒDt          ¦   «         }	t          |‰j        ¦  «        D �]$}
|
sŒ|
j        }||	v rd }nn|dk    r$t!          |                     ||¦  «        ¦  «        }nDt!          |                     ‰j        t          |‰j        ¦  «        |dz
           ¦  «        ¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         rF|	                     t5          |t7          t          |‰j        ¦  «        ¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         �Œ&�Œ��Œ¾d S | j        dk    �rRt          ˆfd„‰                     | ¦  «        D ¦   «         ¦  «        sg S | }t          |‰j        ¦  «        }t          ¦   «         }	t          |‰j        ¦  «        D ]å}
|
sŒ|
j        }||	v rd }nC|dk    rt!          |¦  «        }n-t!          ||                              ‰j        ¦  «        ¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         r3|	                     t5          |t7          |¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         Œæd S J d	| j        z  ¦   «         ‚)
Nr˜   c              3   óZ   •‡K  — | ]$\  Š}t          ˆˆˆfd „|D ¦   «         ¦  «        V — Œ%dS )c              3   óP   •K  — | ] }‰                      ‰j        ‰|¦  «        V — Œ!d S r   ©r‘  r$   ©r   ÚkrŠ   Úcdrk   s     €€€r   r   z+closure_glyphs.<locals>.<genexpr>.<genexpr>©  ó5   øè è € ÐDÐD¸˜Ÿš A¤H¨b°!Ñ4Ô4ÐDÐDÐDÐDÐDÐDr   N©r{   ©r   Úklistr¦  rŠ   rk   s     @€€r   r   z!closure_glyphs.<locals>.<genexpr>¨  ó_   øøè è € ð ð á!˜˜Eõ ÐDÐDÐDÐDÐDÐD¸eÐDÑDÔDÑDÔDðð ð ð ð ð r   r   r©   )rg   c              3   óZ   •‡K  — | ]$\  Š}t          ˆˆˆfd „|D ¦   «         ¦  «        V — Œ%dS )c              3   óP   •K  — | ] }‰                      ‰j        ‰|¦  «        V — Œ!d S r   r£  r¤  s     €€€r   r   z+closure_glyphs.<locals>.<genexpr>.<genexpr>Ì  r§  r   Nr¨  r©  s     @€€r   r   z!closure_glyphs.<locals>.<genexpr>Ë  r«  r   rª   c              3   óT   •K  — | ]"}|d uo|                      ‰j        ¦  «        V — Œ#d S r   rC   ©r   rR  rk   s     €r   r   z!closure_glyphs.<locals>.<genexpr>é  s:   øè è € ÐUÐU¸q�1˜D�=Ð: Q§[¢[°´Ñ%:Ô%:ÐUÐUÐUÐUÐUÐUr   rœ   )rŸ  rž   r;   r@   r�   r�  r³   r~  r  r|  r{   Úzipr�  r?   r<  ÚSequenceIndexÚ	frozensetr$   rG  ÚtableÚ
LookupListÚLookupÚLookupListIndexÚaddr1  rh   Úranger4   rl   rc  rY   )r#   rk   rg   r5   r�  ÚrssÚrssCountr/   rÎ   ÚchaosÚllÚseqiÚ
pos_glyphsÚlookuprc  Úinput_coveragesrŠ   s    `              @r   rl   rl   •  s[  øø€ à×&Ò&Ñ(Ô(€Aà�jŠj˜ÑÔ×(Ò(¨Ñ4Ô4€GØð Øˆ	Ø—’˜DÑ!Ô!×2Ò2°:Ñ>Ô>€Jà„{�aÒÑØ—m’m DÑ)Ô)ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØð 	Dñ 	DˆAØ�HŠ}ˆ} C¨¤Fˆ}ØÝ˜S œV Q¤VÑ,Ô,ð Dñ D�Øð ØÝð ð ð ð ð å%(¨°a·j²jÀ±m´mÑ%DÔ%Dðñ ô ñ ô ð ð Ý™œ�Ý! ! Q¤^Ñ4Ô4ð Dð D�BØð !Ø ØÔ+�DØ˜u�}�}à%)˜
˜
à 1š9˜9Ý)2°A·J²J¸tÑ4DÔ4DÔ4KÈAÔ4NÐ3OÑ)PÔ)P˜J˜Jå)2°A´G¸DÀ1¹HÔ4EÐ3FÑ)GÔ)G˜JØœWÔ/Ô6°rÔ7IÔJ�FØ—I’I˜d‘O”O�OØ×/Ò/Ñ1Ô1ð DØŸš¥U¨4µ°Q´W±´ÀÑ1AÑ%BÔ%BÑCÔCÐCØ×)Ò)¨!¸
Ð)ÑCÔCÐCÐCñ!DñDð	Dð 	Dð: 
Œ˜Ò	Ñ	Ý˜4 ¤Ñ,Ô,ˆØ×$Ò$ ZÑ0Ô0ˆØ—m’m DÑ)Ô)ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØð "	Dñ "	DˆAØ�HŠ}ˆ} C¨¤Fˆ}ØÝ˜S œV Q¤VÑ,Ô,ð Dñ D�Øð ØÝð ð ð ð ð å%(¨°a·j²jÀ±m´mÑ%DÔ%Dðñ ô ñ ô ð ð Ý™œ�Ý! ! Q¤^Ñ4Ô4ð Dñ D�BØð !Ø ØÔ+�DØ˜u�}�}à%)˜
˜
à 1š9˜9Ý)2Ø (× 8Ò 8¸ÀQÑ GÔ Gñ*ô *˜J˜Jõ *3Ø (× 8Ò 8Ø$%¤H­g°a¸¼Ñ.AÔ.AÀ$ÈÁ(Ô.Kñ!"ô !"ñ*ô *˜Jð
 œWÔ/Ô6°rÔ7IÔJ�FØ—I’I˜d‘O”O�OØ×/Ò/Ñ1Ô1ð PØŸš¥U¨4µµW¸QÀÄÑ5HÔ5HÑ1IÔ1IÈAÑ1MÑ%NÔ%NÑOÔOÐOØ×)Ò)¨!¸
Ð)ÑCÔCÐCÑCñ-DñDð"	Dð "	DðF 
Œ˜Ò	Ñ	ÝÐUÐUÐUÐUÀAÇJÂJÈtÑDTÔDTÐUÑUÔUÑUÔUð 	ØˆIØˆÝ! ! Q¤WÑ-Ô-ˆÝ‘”ˆÝ˜!˜Qœ^Ñ,Ô,ð 	<ð 	<ˆBØð ØØÔ#ˆDØ�uˆ}ˆ}à!�
�
à˜1’9�9Ý!*¨:Ñ!6Ô!6�J�Jå!*Ø'¨Ô-×>Ò>¸q¼xÑHÔHñ"ô "�Jð ”WÔ'Ô.¨rÔ/AÔBˆFØ�IŠI�d‰OŒOˆOØ×'Ò'Ñ)Ô)ð DØ—’�U 4­¨_Ñ)=Ô)=ÀÑ)AÑBÔBÑCÔCÐCØ×!Ò! !°
Ð!Ñ;Ô;Ð;Ð;ð%	<ð 	<ð( 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óp  ‡‡‡‡‡	‡
— |                       ¦   «         Š| j        dk    �rJ| j                             ‰j        ¦  «        Št          | ‰j        ¦  «        Š	t          | ‰j        ¦  «        Š
ˆ	ˆ
fd„‰D ¦   «         Š	‰	D ]b}|sŒt          |‰j        ¦  «        }ˆˆfd„|D ¦   «         }t          |‰j        |¦  «         t          |‰j
        t          |¦  «        ¦  «         Œcˆfd„t          ‰	¦  «        D ¦   «         Š| j                             ‰¦  «         t          ‰	‰¦  «        Š	t          | ‰j        ‰	¦  «         t          | ‰j        t          ‰	¦  «        ¦  «         t          ‰	¦  «        S | j        dk    �rð| j                             ‰j        ¦  «        sdS ‰                     | ¦  «        }ˆfd„|D ¦   «         Š‰‰j                 Št          | ‰j        ¦  «        Š	t          | ‰j        ¦  «        Š
ˆ	ˆ
fd„‰D ¦   «         Š	‹
t          | ‰j        ¦  «                             | j        j        ¦  «        Šˆfd	„t          ‰	¦  «        D ¦   «         Š	‰	D ]¨}|sŒt          |‰j        ¦  «        }ˆˆfd
„|D ¦   «         }t          |‰j        |¦  «         t          |‰j
        t          |¦  «        ¦  «         |D ]C}‰                     |d„ t+          ‰‰                     |¦  «        ¦  «        D ¦   «         ¦  «         ŒDŒ©ˆfd„‰	D ¦   «         Š	‰	r‰	d         €‰	d= ‰	r‰	d         ®t          | ‰j        ‰	¦  «         t          | ‰j        t          ‰	¦  «        ¦  «         t          ‰	¦  «        S | j        dk    r.t/          ˆfd„‰                     | ¦  «        D ¦   «         ¦  «        S J d| j        z  ¦   «         ‚)Nr˜   c                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   ©r   r/   r¹  rº  s     €€r   r2   z!subset_glyphs.<locals>.<listcomp>  ó"   ø€ Ð7Ð7Ð7˜!¨!¨hª,¨,ˆs�1Œv¨,¨,¨,r   c                 ót   •— g | ]4}|¯t          ˆfd „‰                     |¦  «        D ¦   «         ¦  «        ¯2|‘Œ5S )c              3   óN   •K  — | ]}t          ˆfd „|D ¦   «         ¦  «        V — Œ dS )c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   rG   ©r   r   rk   s     €r   r   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>  s)   øè è € Ð9Ð9¨a˜A ¤˜MÐ9Ð9Ð9Ð9Ð9Ð9r   Nr¨  )r   Úglistrk   s     €r   r   z+subset_glyphs.<locals>.<listcomp>.<genexpr>  s@   øè è € ÐUÐU¸e�Ð9Ð9Ð9Ð9°5Ð9Ñ9Ô9Ñ9Ô9ÐUÐUÐUÐUÐUÐUr   )r{   r�  )r   rÎ   rŠ   rk   s     €€r   r2   z!subset_glyphs.<locals>.<listcomp>  sa   ø€ ð ð ð àØðõ ÐUÐUÐUÐUÀqÇzÂzÐRSÁ}Ä}ÐUÑUÔUÑUÔUð	Øðð ð r   c                 óH   •— g | ]\  }}|¯t          |‰j        ¦  «        ¯|‘ŒS r   ©r³   r|  )r   r/   ÚrsrŠ   s      €r   r2   z!subset_glyphs.<locals>.<listcomp>   s3   ø€ ÐOÐOÐO™˜˜B°BÐO½7À2ÀqÄvÑ;NÔ;NÐO�1ÐOÐOÐOr   r©   Fc                 óP   •— g | ]"}|r|                      ‰j        d ¬¦  «        nd‘Œ#S )TrÕ   Nr¤   r¯  s     €r   r2   z!subset_glyphs.<locals>.<listcomp>*  sB   ø€ ð 
ð 
ð 
Ø>?¨aÐ9ˆA�HŠH�Q”X TˆHÑ*Ô*Ð*°Tð
ð 
ð 
r   c                 ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   rÃ  s     €€r   r2   z!subset_glyphs.<locals>.<listcomp>2  rÄ  r   c                 ó&   •— g | ]\  }}|‰v r|nd ‘ŒS r   r   )r   r/   r¹  r5   s      €r   r2   z!subset_glyphs.<locals>.<listcomp>6  s)   ø€ ÐJÐJÐJ±°°C�a˜7�l�lˆsˆs¨ÐJÐJÐJr   c                 óŒ   •— g | ]@}|¯t          d „ t          ‰‰                     |¦  «        ¦  «        D ¦   «         ¦  «        ¯>|‘ŒAS )c              3   óT   ‡K  — | ]"\  Š}t          ˆfd „|D ¦   «         ¦  «        V — Œ#dS )c              3   ó    •K  — | ]}|‰v V — Œ	d S r   r   ©r   r¥  Ú	klass_maps     €r   r   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>A  s'   øè è € Ð6Ð6¨1˜˜Y˜Ð6Ð6Ð6Ð6Ð6Ð6r   Nr¨  ©r   rª  rÔ  s     @r   r   z+subset_glyphs.<locals>.<listcomp>.<genexpr>@  sX   øè è € ð ð á(˜	 5õ Ð6Ð6Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6ðð ð ð ð ð r   )r{   r°  r�  )r   rÎ   rŠ   Ú
klass_mapss     €€r   r2   z!subset_glyphs.<locals>.<listcomp><  ss   ø€ ð ð ð àØðõ ð ð å,/°
¸A¿JºJÀq¹M¼MÑ,JÔ,Jðñ ô ñ ô ð	Øðð ð r   c                 ó2   ‡— g | ]\  Š}ˆfd „|D ¦   «         ‘ŒS )c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rb   rÓ  s     €r   r2   z,subset_glyphs.<locals>.<listcomp>.<listcomp>M  s%   ø€ Ð;Ð;Ð;°˜Ÿš¨Ñ+Ô+Ð;Ð;Ð;r   r   rÕ  s     @r   r2   z!subset_glyphs.<locals>.<listcomp>L  sA   ø€ ð ð ð á,˜I uð <Ð;Ð;Ð;°UÐ;Ñ;Ô;ðð ð r   c                 óF   •— g | ]}|rt          |‰j        ¦  «        r|nd ‘ŒS r   rË  )r   rÌ  rŠ   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>S  s3   ø€ ÐHÐHÐH¸b�RÐ9�G B¨¬Ñ/Ô/Ð9ˆrˆr°TÐHÐHÐHr   éÿÿÿÿrª   c              3   óT   •K  — | ]"}|d uo|                      ‰j        ¦  «        V — Œ#d S r   r¤   r¯  s     €r   r   z subset_glyphs.<locals>.<genexpr>`  s:   øè è € ÐRÐR¸A�1˜D�=Ð7 Q§X¢X¨a¬hÑ%7Ô%7ÐRÐRÐRÐRÐRÐRr   r   rœ   )rŸ  r�   rž   rD   r$   r³   r~  r  r|  rö   r}  r4   r9   rJ   r6   rq   r�  r’  rc  r;   rU  r°  r�  r{   )r#   rk   rÌ  Ússr�  rÎ   rŠ   r5   rÖ  r¹  rº  s    `    @@@@@r   rs   rs     s<  øøøøøø€ ð 	×&Ò&Ñ(Ô(€Aà„{�aÒÑØ”-×&Ò& q¤xÑ0Ô0ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØ7Ð7Ð7Ð7Ð7˜wÐ7Ñ7Ô7ˆØð 	.ð 	.ˆBØð ØÝ˜˜QœVÑ$Ô$ˆBðð ð ð ð àðñ ô ˆBõ �B˜œ Ñ#Ô#Ð#Ý�B˜œ¥S¨¡W¤WÑ-Ô-Ð-Ð-àOÐOÐOÐO¥)¨C¡.¤.ÐOÑOÔOˆØŒ×Ò˜GÑ$Ô$Ð$Ý˜3 Ñ(Ô(ˆÝ��a”i Ñ%Ô%Ð%Ý��a”n¥c¨#¡h¤hÑ/Ô/Ð/Ý�C‰yŒyÐØ	Œ˜Ò	Ñ	ØŒ}×#Ò# A¤HÑ-Ô-ð 	Ø�5Ø—m’m DÑ)Ô)ˆð
ð 
ð 
ð 
ØCNð
ñ 
ô 
ˆ
ð
 ˜Qœ_Ô-ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØ7Ð7Ð7Ð7Ð7˜wÐ7Ñ7Ô7ˆØå˜$ ¤
Ñ+Ô+×5Ò5°d´mÔ6JÑKÔKˆØJÐJÐJÐJ½9ÀS¹>¼>ÐJÑJÔJˆàð 	ð 	ˆBØð ØÝ˜˜QœVÑ$Ô$ˆBðð ð ð ð àðñ ô ˆBõ �B˜œ Ñ#Ô#Ð#Ý�B˜œ¥S¨¡W¤WÑ-Ô-Ð-ð ð ð �Ø—’Øðð å03°JÀÇ
Â
È1ÁÄÑ0NÔ0Nðñ ô ñô ð ð ðð IÐHÐHÐHÀCÐHÑHÔHˆØð 	�c˜"”g�oØ�B�ð ð 	�c˜"”g�oå��a”i Ñ%Ô%Ð%Ý��a”n¥c¨#¡h¤hÑ/Ô/Ð/õ �C‰yŒyÐØ	Œ˜Ò	Ð	ÝÐRÐRÐRÐRÀÇÂÈDÑAQÔAQÐRÑRÔRÑRÔRÐRà4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ó¨  ‡— |                       ¦   «         }| j        dv r§t          | |j        ¦  «        D ]�}|sŒt          ||j        ¦  «        D ]t}|sŒt          ||j        ˆfd„t          ||j        ¦  «        D ¦   «         ¦  «         t          ||j        ¦  «        D ]$}|sŒ‰                     |j        ¦  «        |_        Œ%ŒuŒ�d S | j        dk    rqt          | |j        ˆfd„t          | |j        ¦  «        D ¦   «         ¦  «         t          | |j        ¦  «        D ]$}|sŒ‰                     |j        ¦  «        |_        Œ%d S J d| j        z  ¦   «         ‚)Nræ   c                 ó*   •— g | ]}|r|j         ‰v ¯|‘ŒS r   ©r¶  ©r   r¼  r*  s     €r   r2   z"subset_lookups.<locals>.<listcomp>x  s;   ø€ ð ð ð àØðð #%Ô"4¸Ð"FÐ"Fð à"FÐ"FÐ"Fr   rª   c                 ó*   •— g | ]}|r|j         ‰v ¯|‘ŒS r   rß  rà  s     €r   r2   z"subset_lookups.<locals>.<listcomp>†  s;   ø€ ð ð ð àØðð Ô,°Ð>Ð>ð à>Ð>Ð>r   r   rœ   )	rŸ  r�   r³   r~  r|  rö   r<  rc   r¶  )r#   r*  rŠ   rÌ  rÎ   r¼  s    `    r   r+  r+  e  sâ  ø€ ð 	×&Ò&Ñ(Ô(€Aà„{�fÐÐÝ˜$ ¤	Ñ*Ô*ð 	Rð 	RˆBØð ØÝ˜R ¤Ñ(Ô(ð Rð R�Øð ØÝØØ”Nðð ð ð å")¨!¨Q¬^Ñ"<Ô"<ðñ ô ñô ð õ " ! Q¤^Ñ4Ô4ð Rð R�BØð !Ø Ø)7×)=Ò)=¸bÔ>PÑ)QÔ)Q�BÔ&Ð&ðRðRð	Rð 	Rð& 
Œ˜Ò	Ð	ÝØØŒNðð ð ð å! $¨¬Ñ7Ô7ðñ ô ñ	
ô 	
ð 	
õ ˜$ ¤Ñ/Ô/ð 	Jð 	JˆBØð ØØ!/×!5Ò!5°bÔ6HÑ!IÔ!IˆBÔÐð	Jð 	Jð
 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óø   ‡— |                       ¦   «         Š| j        dv r!ˆfd„t          | ‰j        ¦  «        D ¦   «         S | j        dk    rd„ t          | ‰j        ¦  «        D ¦   «         S J d| j        z  ¦   «         ‚)Nræ   c                 óŠ   •— g | ]?}|¯t          |‰j        ¦  «        D ]%}|¯t          |‰j        ¦  «        D ]}|¯|j        ‘ŒŒ&Œ@S r   )r³   r|  r<  r¶  )r   rÌ  rÎ   r¼  rŠ   s       €r   r2   z#collect_lookups.<locals>.<listcomp>ž  sŒ   ø€ ð 
ð 
ð 
àØð
õ ˜R ¤Ñ(Ô(ð	
ð 
ð Øð
õ ˜a ¤Ñ0Ô0ð
ð 
ð Øð
ØÔð
ð 
ð 
ð 
ð 
r   rª   c                 ó    — g | ]}|¯|j         ‘ŒS r   rß  )r   r¼  s     r   r2   z#collect_lookups.<locals>.<listcomp>¨  s    € ÐQÐQÐQ rÈbÐQ�Ô"ÐQÐQÐQr   r   rœ   )rŸ  r�   r³   r~  r<  )r#   rŠ   s    @r   r-  r-  ”  sŸ   ø€ ð 	×&Ò&Ñ(Ô(€Aà„{�fÐÐð
ð 
ð 
ð 
å˜d A¤IÑ.Ô.ð
ñ 
ô 
ð 	
ð 
Œ˜Ò	Ð	ØQÐQ­W°T¸1¼>Ñ-JÔ-JÐQÑQÔQÐQà4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óv   — | j         dk    r| j                             ||¦  «         d S J d| j         z  ¦   «         ‚©Nr˜   r   rœ   )r�   ÚExtSubTablerl   rj   s      r   rl   rl   ­  sD   € à„{�aÒÐØÔ×'Ò'¨¨:Ñ6Ô6Ð6Ð6Ð6à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ón   — | j         dk    r| j                             ¦   «         S J d| j         z  ¦   «         ‚ræ  )r�   rç  r1  r¬   s    r   r1  r1  µ  s:   € à„{�aÒÐØÔ×1Ò1Ñ3Ô3Ð3à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óp   — | j         dk    r| j                             |¦  «        S J d| j         z  ¦   «         ‚ræ  )r�   rç  rs   rr   s     r   rs   rs   ½  s<   € à„{�aÒÐØÔ×-Ò-¨aÑ0Ô0Ð0à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ór   — | j         dk    r| j                             ||¦  «        S J d| j         z  ¦   «         ‚ræ  )r�   rç  rÈ   r/  s      r   rÈ   rÈ   Å  s>   € à„{�aÒÐØÔ×1Ò1°$¸Ñ@Ô@Ð@à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 óp   — | j         dk    r| j                             |¦  «        S J d| j         z  ¦   «         ‚ræ  )r�   rç  r+  r)  s     r   r+  r+  Í  s<   € à„{�aÒÐØÔ×.Ò.¨~Ñ>Ô>Ð>à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ón   — | j         dk    r| j                             ¦   «         S J d| j         z  ¦   «         ‚ræ  )r�   rç  r-  r¬   s    r   r-  r-  Õ  s:   € à„{�aÒÐØÔ×/Ò/Ñ1Ô1Ð1à4Ð&¨¬Ñ4Ñ4Ô4Ð4r   c                 ó²  — |€t          |j        ¦  «        }t          | ¦  «        }|j        }|                     |d¦  «        \  }}|t          |j        ¦  «        k    r*t          |j        ¦  «        t          ¦   «         fx\  }}||<   |                     |¦  «        rd S |                     |¦  «         | j	        D ]}|sŒ| 
                    ||¦  «         Œd S )NrÂ   )r²  r$   ÚidÚ_doneLookupsÚgetr4   r?   Úissubsetrh   ÚSubTablerl   )r#   rk   rg   ÚkeyÚdoneLookupsr0   ÚcoveredÚsts           r   rl   rl   Ý  så   € àÐÝ˜qœxÑ(Ô(ˆ
õ ˆT‰(Œ(€CØ”.€KØ —_’_ S¨)Ñ4Ô4�N€Eˆ7Ø•�A”H‘”ÒÐÝ-0°´©]¬]½C¹E¼EÐ,BÐB‰ˆˆw˜ SÑ)Ø×Ò˜7Ñ#Ô#ð ØˆØ‡N‚N�:ÑÔÐàŒmð )ð )ˆØð 	ØØ
×Ò˜!˜ZÑ(Ô(Ð(Ð(ð)ð )r   c                 óP  ‡— ˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | d¦  «        rQ| j        �J| j        ‰j        vrd | _        | xj        dz  c_        n$‰j                             | j        ¦  «        | _        t          | j        ¦  «        S )Nc                 óB   •— g | ]}|¯|                      ‰¦  «        ¯|‘ŒS r   ©rs   )r   rö  rk   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>ô  s1   ø€ ÐNÐNÐN˜B°2ÐN¸"×:JÒ:JÈ1Ñ:MÔ:MÐN�RÐNÐNÐNr   ÚMarkFilteringSetiïÿÿÿ)	rò  r4   ÚSubTableCountrœ  rú  Úused_mark_setsÚ
LookupFlagrc   rq   rr   s    `r   rs   rs   ò  s¦   ø€ àNÐNÐNÐN $¤-ÐNÑNÔN€D„MÝ˜Tœ]Ñ+Ô+€DÔÝˆtÐ'Ñ(Ô(ð R¨TÔ-BÐ-NØÔ ¨Ô(8Ð8Ð8Ø$(ˆDÔ!ØˆOŒO˜uÑ$ˆOŒOˆOà$%Ô$4×$:Ò$:¸4Ô;PÑ$QÔ$QˆDÔ!Ý�Ô"Ñ#Ô#Ð#r   c                 óT   — d}| j         D ]}|sŒ|                     ||¦  «        rd}Œ|S ©NFT)rò  rÈ   )r#   r%   rÇ   Úretrö  s        r   rÈ   rÈ   ÿ  sF   € à
€CØŒmð ð ˆØð 	ØØ×Ò  gÑ.Ô.ð 	ØˆCøØ€Jr   c                 óD   — | j         D ]}|                     |¦  «         Œd S r   )rò  r+  )r#   r*  rk   s      r   r+  r+  
  s4   € àŒ]ð )ð )ˆØ	×Ò˜Ñ(Ô(Ð(Ð(ð)ð )r   c                 ó@   — t          d„ | j        D ¦   «         g ¦  «        S )Nc              3   óB   K  — | ]}|¯|                      ¦   «         V — Œd S r   )r-  ©r   rö  s     r   r   z"collect_lookups.<locals>.<genexpr>  s3   è è € ÐCÐC¨ÀÐC�×"Ò"Ñ$Ô$ÐCÐCÐCÐCÐCÐCr   )Úsumrò  r¬   s    r   r-  r-    s#   € åÐCÐC¨t¬}ÐCÑCÔCÀRÑHÔHÐHr   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   óB   K  — | ]}|¯|                      ¦   «         V — Œd S r   )r1  r  s     r   r   z$may_have_non_1to1.<locals>.<genexpr>  s3   è è € ÐDÐD¨"ÀÐDˆr×#Ò#Ñ%Ô%ÐDÐDÐDÐDÐDÐDr   )rS   rò  r¬   s    r   r1  r1    s!   € åÐDÐD°´ÐDÑDÔDÑDÔDÐDr   c                 óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )z(Returns the indices of nonempty lookups.c                 óH   •— g | ]\  }}|¯|                      ‰¦  «        ¯|‘ŒS r   rù  )r   r/   r1   rk   s      €r   r2   z!subset_glyphs.<locals>.<listcomp>  s3   ø€ ÐMÐMÐM‘$�!�Q°AÐM¸!¿/º/È!Ñ:LÔ:LÐMˆAÐMÐMÐMr   )r9   rµ  rr   s    `r   rs   rs     s*   ø€ ð NÐMÐMÐM�) D¤KÑ0Ô0ÐMÑMÔMÐMr   c                 óT   — d}| j         D ]}|sŒ|                     ||¦  «        rd}Œ|S rÿ  )rµ  rÈ   )r#   r%   rÇ   r   r1   s        r   rÈ   rÈ      sF   € à
€CØŒ[ð ð ˆØð 	ØØ×Ò˜t WÑ-Ô-ð 	ØˆCøØ€Jr   c                 óÆ   ‡ — ‰                       ¦   «          ˆ fd„|D ¦   «         ‰ _        t          ‰ j        ¦  «        ‰ _        ‰ j        D ]}|                     |¦  «         Œd S )Nc                 ó@   •— g | ]}|‰j         k     ¯‰j        |         ‘ŒS r   )ÚLookupCountrµ  rH   s     €r   r2   z"subset_lookups.<locals>.<listcomp>.  s,   ø€ ÐRÐRÐR a¸QÀÔAQÒ=QÐ=Q�4”;˜q”>Ð=QÐ=QÐ=Qr   )ÚensureDecompiledrµ  r4   r  r+  )r#   r*  r1   s   `  r   r+  r+  +  st   ø€ à×ÒÑÔÐØRÐRÐRÐR¨>ÐRÑRÔR€D„KÝ˜4œ;Ñ'Ô'€DÔØŒ[ð )ð )ˆØ	×Ò˜Ñ(Ô(Ð(Ð(ð)ð )r   c                 óz   ‡— |                       ¦   «          ˆfd„t          | j        ¦  «        D ¦   «         | _        dS )ú+Sets lookups not in lookup_indices to None.c                 ó&   •— g | ]\  }}|‰v r|nd ‘ŒS r   r   )r   r/   r1   r*  s      €r   r2   z"neuter_lookups.<locals>.<listcomp>8  s8   ø€ ð ð ð Ù/3¨q°!ˆQ�.Ð Ð ˆˆ dðð ð r   N)r  r9   rµ  r)  s    `r   Úneuter_lookupsr  4  sO   ø€ ð 	×ÒÑÔÐðð ð ð Ý7@ÀÄÑ7MÔ7Mðñ ô €D„K€K€Kr   c                 óð   ‡ ‡— t          ‰¦  «        Š‰}	 t          ˆ fd„|D ¦   «         g ¦  «        }ˆˆ fd„|D ¦   «         }|st          ‰¦  «        S t          |¦  «        }‰                     |¦  «         |}Œc)zBReturns sorted index of all lookups reachable from lookup_indices.Tc              3   ól   •K  — | ].}|‰j         k     ¯‰j        |                              ¦   «         V — Œ/d S r   )r  rµ  r-  rH   s     €r   r   z"closure_lookups.<locals>.<genexpr>D  sB   øè è € ÐWÐW°!À!ÀdÔFVÒBVÐBVˆTŒ[˜Œ^×+Ò+Ñ-Ô-ÐBVÐBVÐBVÐBVÐWÐWr   c                 ó2   •— g | ]}|‰v¯|‰j         k     ¯|‘ŒS r   )r  )r   r1   r*  r#   s     €€r   r2   z#closure_lookups.<locals>.<listcomp>G  s;   ø€ ð 
ð 
ð 
àØ˜Ð&Ð&¨1¨tÔ/?Ò+?Ð+?ð à+?Ð+?Ð+?r   )r   r  Úextend)r#   r*  ÚrecurseÚrecurse_lookupss   ``  r   Úclosure_lookupsr  =  s¶   øø€ õ   Ñ/Ô/€NØ€Gð"ÝØWÐWÐWÐW°wÐWÑWÔWØñ
ô 
ˆð
ð 
ð 
ð 
ð 
à$ð
ñ 
ô 
ˆð
 ð 	.Ý˜nÑ-Ô-Ð-Ý$ _Ñ5Ô5ˆØ×Ò˜oÑ.Ô.Ð.Ø!ˆð"r   c                 óâ   ‡— ˆfd„| j         D ¦   «         | _         ˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        | j        pt          | j        t
          j        ¦  «        S )z2 "Returns True if feature is non-empty afterwards.c                 ó   •— g | ]}|‰v ¯|‘Œ	S r   r   ©r   r1   r*  s     €r   r2   z"subset_lookups.<locals>.<listcomp>V  s#   ø€ ÐSÐSÐS !¸qÀNÐ?RÐ?R˜AÐ?RÐ?RÐ?Rr   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rb   r  s     €r   r2   z"subset_lookups.<locals>.<listcomp>X  s'   ø€ ÐRÐRÐR¸˜N×0Ò0°Ñ3Ô3ÐRÐRÐRr   )r¶  r4   r  Ú
isinstanceÚFeatureParamsr   ÚFeatureParamsSizer)  s    `r   r+  r+  S  s€   ø€ ð TÐSÐSÐS tÔ';ÐSÑSÔS€DÔàRÐRÐRÐR¸TÔ=QÐRÑRÔR€DÔÝ˜4Ô/Ñ0Ô0€DÔð Ôð �zØÔ�HÔ6ñ ô  ð r   c                 óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )ú)Returns the indices of nonempty features.c                 ód   •— g | ],\  }}|j                              ‰¦  «        s|j        d k    ¯*|‘Œ-S )Úpref)ÚFeaturer+  Ú
FeatureTag)r   r/   Úfr*  s      €r   r2   z"subset_lookups.<locals>.<listcomp>i  sN   ø€ ð ð ð áˆAˆqØŒI×$Ò$ ^Ñ4Ô4ðð 9:¼ÈÒ8NÐ8Nð 	
à8NÐ8NÐ8Nr   )r9   ÚFeatureRecordr)  s    `r   r+  r+  b  s9   ø€ ðð ð ð å˜dÔ0Ñ1Ô1ðñ ô ð r   c                 ó<   ‡ — t          ˆ fd„|D ¦   «         g ¦  «        S )Nc              3   ó\   •K  — | ]&}|‰j         k     ¯‰j        |         j        j        V — Œ'd S r   )ÚFeatureCountr(  r%  r¶  rH   s     €r   r   z"collect_lookups.<locals>.<genexpr>s  sK   øè è € ð 	
ð 	
àØ�4Ô$Ò$Ð$ð Ô˜qÔ!Ô)Ô9à$Ð$Ð$Ð$ð	
ð 	
r   )r  ©r#   Úfeature_indicess   ` r   r-  r-  p  s@   ø€ åð	
ð 	
ð 	
ð 	
à$ð	
ñ 	
ô 	
ð
 	ñô ð r   c                 ó¸   — |                       ¦   «          t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r  r6   r(  r4   r+  rq   r,  s     r   Úsubset_featuresr/  |  sM   € à×ÒÑÔÐÝ% dÔ&8¸/ÑJÔJ€DÔÝ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ñ"Ô"Ð"r   c                 ó*   ‡— ˆfd„| j         D ¦   «         S )r"  c                 óR   •— g | ]#}|j                              ‰¦  «        ¯|j        ‘Œ$S r   )r%  r+  ÚFeatureIndex)r   rÎ   r*  s     €r   r2   z"subset_lookups.<locals>.<listcomp>‡  sA   ø€ ð ð ð àØŒ9×#Ò# NÑ3Ô3ðØ	Œðð ð r   )ÚSubstitutionRecordr)  s    `r   r+  r+  „  s1   ø€ ðð ð ð àÔ(ðñ ô ð r   c                 óF   ‡— t          ˆfd„| j        D ¦   «         g ¦  «        S )r"  c              3   óL   •K  — | ]}|j                              ‰¦  «        V — Œd S r   )ÚFeatureTableSubstitutionr+  )r   r'  r*  s     €r   r   z!subset_lookups.<locals>.<genexpr>’  sH   øè è € ð 	
ð 	
àð Ô&×5Ò5°nÑEÔEð	
ð 	
ð 	
ð 	
ð 	
ð 	
r   ©r  ÚFeatureVariationRecordr)  s    `r   r+  r+  Ž  sE   ø€ õ ð	
ð 	
ð 	
ð 	
àÔ0ð	
ñ 	
ô 	
ð 	ñô ð r   c                 óF   ‡— t          ˆfd„| j        D ¦   «         g ¦  «        S )Nc              3   ó`   •K  — | ](}|j         j        D ]}|j        ‰v ¯|j        j        V — ŒŒ)d S r   )r6  r3  r2  r%  r¶  )r   ÚvrrÎ   r-  s      €r   r   z"collect_lookups.<locals>.<genexpr>�  s^   øè è € ð 	
ð 	
àØÔ0ÔCð	
ð 	
ð ØŒ~ Ð0Ð0ð ŒIÔ%ð 1Ð0Ð0Ð0Ð0ð		
ð 	
r   r7  r,  s    `r   r-  r-  š  sC   ø€ åð	
ð 	
ð 	
ð 	
àÔ1ð	
ñ 	
ô 	
ð 	ñô ð r   c                 ó  ‡— |                       ¦   «          ˆfd„| j        D ¦   «         | _        | j        D ]!}‰                     |j        ¦  «        |_        Œ"t	          | j        ¦  «        | _        t          | j        ¦  «        S )Nc                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   )r2  )r   rÎ   r-  s     €r   r2   z#subset_features.<locals>.<listcomp>ª  s,   ø€ ð ð ð Ø¨a¬nÀÐ.OÐ.OˆÐ.OÐ.OÐ.Or   )r  r3  rc   r2  r4   ÚSubstitutionCountrq   ©r#   r-  rÎ   s    ` r   r/  r/  §  s”   ø€ à×ÒÑÔÐðð ð ð ØÔ*ðñ ô €DÔð Ô$ð ?ð ?ˆØ(×.Ò.¨q¬~Ñ>Ô>ˆŒˆÝ  Ô!8Ñ9Ô9€DÔÝ�Ô&Ñ'Ô'Ð'r   c                 óv  — |                       ¦   «          | j        D ]}|j                             |¦  «         Œ| j        rN| j        d         j        j        s7| j                             ¦   «          | j        r| j        d         j        j        ¯7t          | j        ¦  «        | _        t          | j        ¦  «        S )NrÚ  )	r  r8  r6  r/  r>  Úpopr4   ÚFeatureVariationCountrq   r?  s      r   r/  r/  ´  sË   € à×ÒÑÔÐØÔ(ð Dð DˆØ	Ô"×2Ò2°?ÑCÔCÐCÐCð 	Ô#ð*àÔ+Øô
ä
"Ô#4ð	*ð 	Ô#×'Ò'Ñ)Ô)Ð)ð 	Ô#ð*àÔ+Øô
ä
"Ô#4ð	*õ "% TÔ%@Ñ!AÔ!A€DÔÝ�Ô*Ñ+Ô+Ð+r   c                 ó4  ‡— | j         ‰v r ‰                     | j         ¦  «        | _         nd| _         ˆfd„| j        D ¦   «         | _        ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p
| j         dk    ¦  «        S )Néÿÿ  c                 ó   •— g | ]}|‰v ¯|‘Œ	S r   r   ©r   r'  r-  s     €r   r2   z#subset_features.<locals>.<listcomp>Ì  s#   ø€ ÐNÐNÐN˜q¸¸oÐ9MÐ9M˜Ð9MÐ9MÐ9Mr   c                 óB   •— g | ]}|‰v ¯‰                      |¦  «        ‘ŒS r   rb   rF  s     €r   r2   z#subset_features.<locals>.<listcomp>Î  s8   ø€ ð ð ð Ø%&¸qÀOÐ?SÐ?Sˆ×Ò˜aÑ Ô Ð?SÐ?SÐ?Sr   )ÚReqFeatureIndexrc   r2  r4   r+  rq   r,  s    `r   r/  r/  Æ  sµ   ø€ àÔ˜Ð.Ð.Ø.×4Ò4°TÔ5IÑJÔJˆÔÐà$ˆÔØNÐNÐNÐN DÔ$5ÐNÑNÔN€DÔðð ð ð Ø*.Ô*;ðñ ô €DÔõ ˜DÔ-Ñ.Ô.€DÔÝ�Ô!ÐB TÔ%9¸UÒ%BÑCÔCÐCr   c                 óˆ   — | j         d d …         }| j        dk    r|                     | j        ¦  «         t          |¦  «        S ©NrD  )r2  rH  Úappendr   r,  s     r   Úcollect_featuresrL  Õ  sF   € àÔ'¨¨¨Ô*€OØÔ˜uÒ$Ð$Ø×Ò˜tÔ3Ñ4Ô4Ð4Ý�oÑ&Ô&Ð&r   c                 óð   ‡— | j         r#| j                              ‰¦  «        s	|sd | _         ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p| j         ¦  «        S )Nc                 óH   •— g | ]}|j                              ‰¦  «        ¯|‘ŒS r   )ÚLangSysr/  )r   r1   r-  s     €r   r2   z#subset_features.<locals>.<listcomp>å  s>   ø€ ð ð ð Ø¨¬×)BÒ)BÀ?Ñ)SÔ)SðØ	ðð ð r   )ÚDefaultLangSysr/  ÚLangSysRecordr4   ÚLangSysCountrq   )r#   r-  ÚkeepEmptyDefaultLangSyss    ` r   r/  r/  Ý  s™   ø€ ð 	Ôð#àÔ#×3Ò3°OÑDÔDð#ð (ð#ð
 #ˆÔðð ð ð ØÔ%ðñ ô €DÔõ ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ð8 TÔ%8Ñ9Ô9Ð9r   c                 óÄ   — d„ | j         D ¦   «         }| j        r,|                     | j                             ¦   «         ¦  «         t	          t          |g ¦  «        ¦  «        S )Nc                 ó@   — g | ]}|j                              ¦   «         ‘ŒS r   )rO  rL  )r   r1   s     r   r2   z$collect_features.<locals>.<listcomp>î  s&   € ÐPÐPÐP¸�q”y×1Ò1Ñ3Ô3ÐPÐPÐPr   )rQ  rP  rK  rL  r   r  r,  s     r   rL  rL  ì  s_   € àPÐP¸TÔ=OÐPÑPÔP€OØÔð GØ×Ò˜tÔ2×CÒCÑEÔEÑFÔFÐFÝ•c˜/¨2Ñ.Ô.Ñ/Ô/Ð/r   c                 ó’   ‡‡— ˆˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | j        ¦  «        S )Nc                 ó`   •— g | ]*}|j                              ‰|j        d k    ¦  «        s‰¯(|‘Œ+S )ÚDFLT)ÚScriptr/  Ú	ScriptTag)r   rk   r-  Úretain_emptys     €€r   r2   z#subset_features.<locals>.<listcomp>÷  sR   ø€ ð ð ð àØŒ8×#Ò# O°Q´[ÀFÒ5JÑKÔKðð ð	Ø	ðð ð r   )ÚScriptRecordr4   ÚScriptCountrq   )r#   r-  r[  s    ``r   r/  r/  ô  s]   øø€ ðð ð ð ð àÔ"ðñ ô €DÔõ ˜4Ô,Ñ-Ô-€DÔÝ�Ô Ñ!Ô!Ð!r   c                 óZ   — t          t          d„ | j        D ¦   «         g ¦  «        ¦  «        S )Nc              3   óH   K  — | ]}|j                              ¦   «         V — Œd S r   )rY  rL  ©r   rk   s     r   r   z#collect_features.<locals>.<genexpr>  s0   è è € ÐRÐR¸1˜1œ8×4Ò4Ñ6Ô6ÐRÐRÐRÐRÐRÐRr   )r   r  r\  r¬   s    r   rL  rL    s-   € å•cÐRÐRÀÔ@QÐRÑRÔRÐTVÑWÔWÑXÔXÐXr   ÚEBLCc                 ó¸   ‡— | j         D ]:}|j        D ]}ˆfd„|j        D ¦   «         |_        Œd„ |j        D ¦   «         |_        Œ;d„ | j         D ¦   «         | _         dS )Nc                 ó&   •— g | ]}|‰j         v ¯|‘ŒS r   rG   )r   Únrk   s     €r   r2   z!subset_glyphs.<locals>.<listcomp>  s    ø€ Ð"SÐ"SÐ"S¨ÀQÈ!Ì(À]À] 1À]À]À]r   c                 ó    — g | ]}|j         ¯	|‘ŒS r   )Únames)r   r/   s     r   r2   z!subset_glyphs.<locals>.<listcomp>  s   € Ð MÐ MÐ M qÀQÄWÐ M Ð MÐ MÐ Mr   c                 ó    — g | ]}|j         ¯	|‘ŒS r   )ÚindexSubTablesr`  s     r   r2   z!subset_glyphs.<locals>.<listcomp>  s    € Ð@Ð@Ð@˜!¨qÔ/?Ð@�AÐ@Ð@Ð@r   T)Ústrikesrh  rf  )r#   rk   ÚstrikeÚindexSubTables    `  r   rs   rs     s„   ø€ à”,ð Nð NˆØ#Ô2ð 	Tð 	TˆMØ"SÐ"SÐ"SÐ"S¨mÔ.AÐ"SÑ"SÔ"SˆMÔÐØ MÐ M¨FÔ,AÐ MÑ MÔ MˆÔÐØ@Ð@˜tœ|Ð@Ñ@Ô@€D„Làˆ4r   ÚEBDTc                 óP   ‡— ˆfd„| j         D ¦   «         }d„ |D ¦   «         | _         dS )Nc                 ó8   •‡— g | ]Šˆfd „‰j         D ¦   «         ‘ŒS )c                 ó*   •— i | ]}|‰v ¯|‰|         “ŒS r   r   ©r   r   rj  s     €r   r+   z,subset_glyphs.<locals>.<listcomp>.<dictcomp>  s$   ø€ Ð7Ð7Ð7˜!¨1°¨;¨;ˆˆF�1ŒI¨;¨;¨;r   rG   )r   rj  rk   s    @€r   r2   z!subset_glyphs.<locals>.<listcomp>  s>   øø€ ð ð ð Ø<BÐ7Ð7Ð7Ð7˜qœxÐ7Ñ7Ô7ðð ð r   c                 ó   — g | ]}|¯|‘ŒS r   r   )r   rj  s     r   r2   z!subset_glyphs.<locals>.<listcomp>  s   € ÐAÐAÐA &¸&ÐA�vÐAÐAÐAr   T)Ú
strikeData)r#   rk   rr  s    ` r   rs   rs     sJ   ø€ ðð ð ð ØFJÄoðñ ô €Jð
 BÐA¨JÐAÑAÔA€D„OØˆ4r   Úsbixc                 óp   ‡— | j                              ¦   «         D ]Šˆfd„|j        D ¦   «         ‰_        ŒdS )Nc                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   rG   rp  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>!  s.   ø€ ÐUÐUÐU°À!ÀvÄ}ÐBTÐBT˜˜FœM¨!Ô,ÐBTÐBTÐBTr   T)ri  r^   r$   )r#   rk   rj  s     @r   rs   rs     sF   ø€ à”,×%Ò%Ñ'Ô'ð Vð VˆØUÐUÐUÐU°a´hÐUÑUÔUˆŒˆàˆ4r   ÚGSUBc                 óŽ  — | j         |_         | j         j        r| j         j                             ¦   «         }ng }| j         j        r | j         j                             |¦  «        }ng }t          | j         dd ¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        rˆi |_	        	 t          |j        ¦  «        }|D ]Z}|| j         j        j        k    rŒ| j         j        j        |         sŒ0| j         j        j        |                              |¦  «         Œ[||j        k    rnŒ~|`	|` d S )NÚFeatureVariations)r³  Ú
ScriptListrL  ÚFeatureListr-  r³   rx  r   r´  rï  r²  r$   r  rµ  rl   )r#   rk   r-  r*  Úorig_glyphsr/   s         r   rl   rl   &  sS  € àŒj€A„GØ„zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ„zÔð ØœÔ/×?Ò?ÀÑPÔPˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð XØ˜$œ*Ô6×FÒFÀÑWÔWÑWˆÝ Ñ/Ô/€NØ„zÔð ØˆŒð		Ý# A¤HÑ-Ô-ˆKØ#ð Bð B�Ø˜œ
Ô-Ô9Ò9Ð9ØØ”zÔ,Ô3°AÔ6ð ØØ”
Ô%Ô,¨QÔ/×>Ò>¸qÑAÔAÐAÐAØ˜aœhÒ&Ð&Øð		ð ˆNØ	ˆˆˆr   ÚGPOSc                 ó¤   — |j         |_        | j        j        r | j        j                             |¦  «        }ng }|                      |¦  «         dS rø   )Úglyphs_gsubedr$   r³  r´  rs   r+  )r#   rk   r*  s      r   rs   rs   D  sP   € àŒ€A„HØ„zÔð ØœÔ.×<Ò<¸QÑ?Ô?ˆˆàˆØ×Ò˜Ñ'Ô'Ð'Øˆ4r   c                 ó<   — | j         t          j        d¦  «        k    S )Nrv  )r�  r   ÚgetTableClassr¬   s    r   Úretain_empty_scriptsr�  O  s   € ð Œ>�UÔ0°Ñ8Ô8Ò8Ð8r   c                 ó†  — | j         j        r| j         j                             |¦  «         | j         j        r | j         j                             |¦  «        }ng }t	          | j         dd¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        r| j         j                             |¦  «         t	          | j         dd¦  «        r| j         j                             |¦  «         | j         j        r4| j         j                             ||  	                    ¦   «         ¦  «         dS dS )zZRetains specified lookups, then removes empty features, language
    systems, and scripts.rx  N)
r³  r´  r+  rz  r³   rx  r   r/  ry  r�  )r#   r*  r-  s      r   r+  r+  V  s?  € ð „zÔð =ØŒ
Ô×,Ò,¨^Ñ<Ô<Ð<Ø„zÔð Øœ*Ô0×?Ò?ÀÑOÔOˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð WØ˜4œ:Ô7×FÒFÀ~ÑVÔVÑVˆÝ  Ñ1Ô1€OØ„zÔð @ØŒ
Ô×.Ò.¨Ñ?Ô?Ð?ÝˆtŒzÐ.°Ñ5Ô5ð FØŒ
Ô$×4Ò4°_ÑEÔEÐEØ„zÔð 
ØŒ
Ô×-Ò-Ø˜T×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r   c                 ó`   — | j         j        r!| j         j                             |¦  «         dS dS )r  N)r³  r´  r  r)  s     r   r  r  m  s:   € ð „zÔð =ØŒ
Ô×,Ò,¨^Ñ<Ô<Ð<Ð<Ð<ð=ð =r   c                 ó  — | j         j        r| j         j                             ¦   «         }ng }| j         j        r | j         j                             |¦  «        }ng }t          | j         dd¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        r | j         j         	                    |¦  «        }ng }|r|  
                    |¦  «         dS |                      |¦  «         dS )z/Remove (default) or neuter unreferenced lookupsrx  N)r³  ry  rL  rz  r-  r³   rx  r   r´  r  r+  r  )r#   rJ   r-  r*  s       r   Úprune_lookupsr…  t  s  € ð „zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ„zÔð ØœÔ/×?Ò?ÀÑPÔPˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð XØ˜$œ*Ô6×FÒFÀÑWÔWÑWˆÝ Ñ/Ô/€NØ„zÔð ØœÔ.×>Ò>¸~ÑNÔNˆˆàˆØð ,Ø×Ò˜NÑ+Ô+Ð+Ð+Ð+à×Ò˜NÑ+Ô+Ð+Ð+Ð+r   c                 ó¢  ‡— | j         j        rˆfd„t          | j         j        j        ¦  «        D ¦   «         }| j         j                             |¦  «         t          | j         dd ¦  «        r| j         j                             |¦  «         ng }| j         j        r4| j         j                             ||                      ¦   «         ¦  «         d S d S )Nc                 ó,   •— g | ]\  }}|j         ‰v ¯|‘ŒS r   )r&  )r   r/   r'  Úfeature_tagss      €r   r2   z'subset_feature_tags.<locals>.<listcomp>�  s4   ø€ ð 
ð 
ð 
á��1ØŒ|˜|Ð+Ð+ð à+Ð+Ð+r   rx  )	r³  rz  r9   r(  r/  r³   rx  ry  r�  )r#   rˆ  r-  s    ` r   Úsubset_feature_tagsr‰  Œ  sé   ø€ à„zÔð 
ð
ð 
ð 
ð 
å! $¤*Ô"8Ô"FÑGÔGð
ñ 
ô 
ˆð
 	Œ
Ô×.Ò.¨Ñ?Ô?Ð?Ý�4”:Ð2°DÑ9Ô9ð 	JØŒJÔ(×8Ò8¸ÑIÔIÐIøàˆØ„zÔð 
ØŒ
Ô×-Ò-Ø˜T×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r   c                 ó>  ‡‡‡— i Št          ¦   «         Š|D ]’}d|v r|                     d¦  «        n|df\  }}‰                     |                     d¦  «        ¦  «         ‰                     |t          ¦   «         ¦  «                             |                     d¦  «        ¦  «         Œ“| j        j        ræˆfd„| j        j        j        D ¦   «         | j        j        _        t          | j        j        j        ¦  «        | j        j        _	        | j        j        j        D ]}Š‰j
        ‰v rpd‰‰j
                 vraˆˆfd„‰j        j        D ¦   «         ‰j        _        t          ‰j        j        ¦  «        ‰j        _        d‰‰j
                 vrd ‰j        _        Œ|d S d S )Nú.r   é   c                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   )rZ  )r   rk   Úscript_tagss     €r   r2   z&subset_script_tags.<locals>.<listcomp>©  s,   ø€ ð .
ð .
ð .
Ø¸Q¼[ÈKÐ=WÐ=WˆAÐ=WÐ=WÐ=Wr   z*   c                 ó<   •— g | ]}|j         ‰‰j                 v ¯|‘ŒS r   )Ú
LangSysTagrZ  )r   r1   ÚlangsysÚrecords     €€r   r2   z&subset_script_tags.<locals>.<listcomp>°  s8   ø€ ð /ð /ð /àØ”| w¨vÔ/?Ô'@Ð@Ð@ð à@Ð@Ð@r   Údflt)r?   Úsplitr·  ÚljustÚ
setdefaultr³  ry  r\  r4   r]  rZ  rY  rQ  rR  rP  )r#   ÚtagsÚtagÚ
script_tagÚlang_tagr‘  r’  rŽ  s        @@@r   Úsubset_script_tagsr›  Ÿ  s¼  øøø€ à€GÝ‘%”%€KØð Eð EˆØ14¸°°˜sŸyšy¨™~œ~˜~À#ÀsÀÑˆ
�HØ�Š˜
×(Ò(¨Ñ+Ô+Ñ,Ô,Ð,Ø×Ò˜:¥s¡u¤uÑ-Ô-×1Ò1°(·.².ÀÑ2CÔ2CÑDÔDÐDÐDà„zÔð 8ð.
ð .
ð .
ð .
Ø”zÔ,Ô9ð.
ñ .
ô .
ˆŒ
ÔÔ*õ -0°´
Ô0EÔ0RÑ,SÔ,SˆŒ
ÔÔ)à”jÔ+Ô8ð 		8ð 		8ˆFØÔ 7Ð*Ð*¨v¸WÀVÔEUÔ=VÐ/VÐ/Vð/ð /ð /ð /ð /à#œ]Ô8ð/ñ /ô /�”Ô+õ
 .1°´Ô1LÑ-MÔ-M�”Ô*Ø ¨Ô)9Ô!:Ð:Ð:Ø37�F”MÔ0øð8ð 8ð		8ð 		8r   c                 ó   — | j         j        r| j         j                             ¦   «         }ng }| j         j        r| j         j                             |¦  «         t          | j         dd¦  «        r| j         j                             |¦  «         | j         j        r4| j         j                             ||                      ¦   «         ¦  «         dS dS )zRemove unreferenced featuresrx  N)r³  ry  rL  rz  r/  r³   rx  r�  r,  s     r   Úprune_featuresr�  º  sÕ   € ð „zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ„zÔð @ØŒ
Ô×.Ò.¨Ñ?Ô?Ð?ÝˆtŒzÐ.°Ñ5Ô5ð FØŒ
Ô$×4Ò4°_ÑEÔEÐEØ„zÔð 
ØŒ
Ô×-Ò-Ø˜T×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r   c                 ó¾   — d|j         vr|                      |j         ¦  «         d|j        vr|                      |j        ¦  «         |                      d¬¦  «         dS )Nr   FrÕ   T)Úlayout_scriptsr›  Úlayout_featuresr‰  r…  r/  s      r   Úprune_pre_subsetr¡  Ë  sj   € ð �'Ô(Ð(Ð(Ø×Ò Ô 6Ñ7Ô7Ð7Ø
�'Ô)Ð)Ð)Ø× Ò  Ô!8Ñ9Ô9Ð9à×Ò˜UÐÑ#Ô#Ð#Øˆ4r   c                 óz  — | j         }|j        r|j        sd S |j        j        }|j        j        D �]	}|j        j        }|sŒ|j        j        d d …         D ]â}|j        }t          |j
        ¦  «        t          |j
        ¦  «        k    rŒ4|j        dk    |j        dk    k    rŒM|j        dk    r||j                 ||j                 k    rŒut          t          |j
        ¦  «        ¦  «        D ],}||j
        |                  ||j
        |                  k    r n Œ-|j        j                             |¦  «         Œã�Œd S rJ  )r³  ry  rz  r(  r\  rY  rP  rQ  rO  r4   r2  rH  r¸  Úremove)r#   r³  Úfeaturesrk   r*   Úlrr1   r/   s           r   Úremove_redundant_langsysr¦  ×  sb  € àŒJ€EØÔð  5Ô#4ð ØˆàÔ Ô.€HàÔÔ*ð 2ñ 2ˆØŒHÔ#ˆØð 	ØØ”(Ô(¨¨¨Ô+ð 	2ð 	2ˆBØ”
ˆAå�1”>Ñ"Ô"¥c¨!¬.Ñ&9Ô&9Ò9Ð9ØØÔ! UÒ*°Ô0AÀUÒ0JÒKÐKØàÔ  EÒ)Ð)Ø˜AÔ-Ô.°(¸1Ô;LÔ2MÒMÐMØå�3˜qœ~Ñ.Ô.Ñ/Ô/ð 2ð 2�Ø˜AœN¨1Ô-Ô.°(¸1¼>È!Ô;LÔ2MÒMÐMØ�Eð Nð ”Ô&×-Ò-¨bÑ1Ô1Ð1øñ#	2ð	2ð 2r   c                 óŽ  — | j         }|                      ¦   «          |j        r|j                             ||¦  «         |j        sd |_        |j        r(|                      ¦   «          |                      ¦   «          t          |d¦  «        r:|j        r|j        r|j        j	        sd |_        |j        s|j
        dk    rd|_
        dS )Nrx  i  é   T)r³  r…  r´  rÈ   rz  r¦  r�  rœ  rx  r8  ÚVersion©r#   r%   rÇ   r³  s       r   rÈ   rÈ   ÷  së   € àŒJ€Eà×ÒÑÔÐàÔð :ØÔ×*Ò*¨4°Ñ9Ô9Ð9ð Ôð !Ø ˆÔàÔð Ø×%Ò%Ñ'Ô'Ð'à×ÒÑÔÐõ ˆuÐ)Ñ*Ô*ð 	'àÔ"ð 	+ØÔð	+Ø"'Ô"9Ô"Pð	+ð '+ˆEÔ#ð Ô&ð 	'¨5¬=¸JÒ+FÐ+FØ&ˆEŒMàˆ4r   ÚGDEFc                 óº  ‡‡‡— |j         Š| j        Š‰j        rf‰j        j                             ‰¦  «        }t          ‰j        j        |¦  «        ‰j        _        t          ‰j        j        ¦  «        ‰j        _        ‰j	        r4ˆfd„‰j	        j
                             ¦   «         D ¦   «         ‰j	        _
        ‰j        r4ˆfd„‰j        j
                             ¦   «         D ¦   «         ‰j        _
        ‰j        rg‰j        j                             ‰¦  «        }‰j        j        Šˆˆfd„|D ¦   «         ‰j        _        t          ‰j        j        ¦  «        ‰j        _        t!          ‰d¦  «        rh‰j        ra‰j        }|j        D ]}|r|                     ‰¦  «         Œd„ t%          |j        ¦  «        D ¦   «         |_        d„ |j        D ¦   «         |_        dS )Nc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rQ   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>/  s,   ø€ ð .
ð .
ð .
Ù�Q˜È1ÐPVÈ;È;ˆAˆqÈ;È;È;r   c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rQ   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>3  s+   ø€ ð )
ð )
ð )
Ù�Q˜ÀaÈ6ÀkÀkˆAˆqÀkÀkÀkr   c                 ó@   •— g | ]}|‰k     ¯‰j         j        |         ‘ŒS r   )Ú
AttachListÚAttachPoint)r   r/   r¥   r³  s     €€r   r2   z!subset_glyphs.<locals>.<listcomp>9  s0   ø€ ð (
ð (
ð (
Ø01ÀÀJÂÀˆEÔÔ(¨Ô+ÀÀÀr   ÚMarkGlyphSetsDefc                 ó&   — g | ]\  }}|j         ¯|‘ŒS r   rG   rÜ   s      r   r2   z!subset_glyphs.<locals>.<listcomp>C  s#   € ÐXÐXÐX¡$ ! QÈqÌxÐX˜AÐXÐXÐXr   c                 ó    — g | ]}|j         ¯	|‘ŒS r   rG   )r   rŠ   s     r   r2   z!subset_glyphs.<locals>.<listcomp>D  s   € Ð!PÐ!PÐ!P¨ÀqÄxÐ!P !Ð!PÐ!PÐ!Pr   T)r~  r³  ÚLigCaretListrž   rD   r6   rŒ   r4   ÚLigGlyphCountÚMarkAttachClassDefrN   rT   ÚGlyphClassDefr°  r¥   r±  rœ  r²  r9   rü  )r#   rk   r5   ÚmarkGlyphSetsÚcoverager¥   r$   r³  s        @@@r   rs   rs   &  s  øøø€ àŒ_€FØŒJ€EØÔð LØÔ$Ô-×4Ò4°VÑ<Ô<ˆÝ&2°5Ô3EÔ3NÐPWÑ&XÔ&XˆÔÔ#Ý+.¨uÔ/AÔ/JÑ+KÔ+KˆÔÔ(ØÔð 
ð.
ð .
ð .
ð .
Ø"Ô5Ô?×EÒEÑGÔGð.
ñ .
ô .
ˆÔ Ô*ð Ôð 
ð)
ð )
ð )
ð )
Ø"Ô0Ô:×@Ò@ÑBÔBð)
ñ )
ô )
ˆÔÔ%ð Ôð HØÔ"Ô+×2Ò2°6Ñ:Ô:ˆØÔ%Ô0ˆ
ð(
ð (
ð (
ð (
ð (
Ø5<ð(
ñ (
ô (
ˆÔÔ$õ '*¨%Ô*:Ô*FÑ&GÔ&GˆÔÔ#ÝˆuÐ(Ñ)Ô)ð Q¨eÔ.Dð QØÔ.ˆØ%Ô.ð 	(ð 	(ˆHØð (Ø—’ Ñ'Ô'Ð'øàXÐX­)°MÔ4JÑ*KÔ*KÐXÑXÔXˆÔØ!PÐ!P¨]Ô-CÐ!PÑ!PÔ!PˆÔàˆ4r   c                 ó�  — d| vrd S | d         }|j         }t          |d¦  «        sd S |j        }t          ¦   «         }|                     |¦  «         d| v r | d         j                              |¦  «         |                     |¦  «        }|                     |¦  «         d| v r"| d         j                              |¦  «         d S d S )Nr«  ÚVarStorer|  )r³  rœ  r¼  r?   Úcollect_device_varidxesÚsubset_varidxesÚremap_device_varidxes)r%   Úgdefr³  ÚstoreÚusedVarIdxesÚ
varidx_maps         r   Ú
_pruneGDEFrÄ  I  sß   € Ø�TÐÐØˆØ�Œ<€DØŒJ€EÝ�5˜*Ñ%Ô%ð ØˆàŒN€Eå‘5”5€Lð 
×!Ò! ,Ñ/Ô/Ð/Ø�€~€~ØˆVŒÔ×2Ò2°<Ñ@Ô@Ð@ð ×&Ò& |Ñ4Ô4€Jð 
×Ò 
Ñ+Ô+Ð+Ø�€~€~ØˆVŒÔ×0Ò0°Ñ<Ô<Ð<Ð<Ð<ð €~r   c                 ót  — | j         }|j        r|j        j        sd |_        |j        r|j        j        sd |_        |j        r|j        j        sd |_        |j        r|j        j        sd |_        t          |d¦  «        r1t          |¦  «         |j
        j        dk    r|j        dk    rd|_        t          |d¦  «        r|j        r|j        j        sd |_        |j        dk    rd|_        t          |j        p8|j        p1|j        p*|j        p#|j        dk    o|j        p|j        dk    o|j
        ¦  «        S )Nr¼  r   i  i  r²  r¨  )r³  rµ  r¶  r·  rN   r¸  r°  r¥   rœ  rÄ  r¼  ÚVarDataCountr©  r²  rž   rq   rª  s       r   rÈ   rÈ   c  s…  € àŒJ€EàÔð " %Ô"4Ô"Bð "Ø!ˆÔØÔð (¨Ô(@Ô(Jð (Ø#'ˆÔ ØÔð # 5Ô#6Ô#@ð #Ø"ˆÔØÔð   Ô 0Ô ;ð  ØˆÔÝˆu�jÑ!Ô!ð +Ý�4ÑÔÐØŒ>Ô&¨!Ò+Ð+ØŒ} 
Ò*Ð*Ø *�”å�EÐ-Ñ.Ô.ð'àÔ%ð'ð Ô%Ô.ð'ð
 "&ˆÔØŒ=˜JÒ&Ð&Ø&ˆEŒMÝØÔð 	<ØÔ#ð	<àÔð	<ð Ôð	<ð ŒM˜ZÒ'ÐB¨EÔ,Bð		<ð
 ŒM˜ZÒ'Ð:¨E¬Nñô ð r   Úkernc                 óV   — d„ | j         D ¦   «         | _         t          | j         ¦  «        S )Nc                 ó2   — g | ]}t          |d ¦  «        ¯|‘ŒS ©Ú	kernTable)rœ  ©r   Úts     r   r2   z$prune_pre_subset.<locals>.<listcomp>‰  s'   € ÐMÐMÐM˜QµW¸QÀÑ5LÔ5LÐM�qÐMÐMÐMr   )Ú
kernTablesrq   r/  s      r   r¡  r¡  †  s,   € ð NÐM $¤/ÐMÑMÔM€D„OÝ�”Ñ Ô Ð r   c                 óÎ   ‡— |j         Š| j        D ],}ˆfd„|j                             ¦   «         D ¦   «         |_        Œ-d„ | j        D ¦   «         | _        t	          | j        ¦  «        S )Nc                 ó6   •— i | ]\  \  }}}|‰v ¯|‰v ¯||f|“ŒS r   r   )r   r  r  rR   r$   s       €r   r+   z!subset_glyphs.<locals>.<dictcomp>‘  s@   ø€ ð 
ð 
ð 
á‘��A˜Ø�Fˆ{ˆ{˜q F˜{˜{ð �ˆF�Aà*˜{˜{r   c                 ó    — g | ]}|j         ¯	|‘ŒS r   rÊ  rÌ  s     r   r2   z!subset_glyphs.<locals>.<listcomp>–  s   € ÐAÐAÐA˜Q°Q´[ÐA�qÐAÐAÐAr   )r~  rÎ  rË  rT   rq   )r#   rk   rÍ  r$   s      @r   rs   rs   �  s   ø€ àŒ_€FØŒ_ð 
ð 
ˆð
ð 
ð 
ð 
àœ[×.Ò.Ñ0Ô0ð
ñ 
ô 
ˆŒˆð
 BÐA $¤/ÐAÑAÔA€D„OÝ�”Ñ Ô Ð r   Úvmtxc                 ó�   — t          | j        |j        ¦  «        | _        |j        D ]}d| j        |<   Œt	          | j        ¦  «        S )N©r   r   )r,   Úmetricsr$   Úglyphs_emptiedrq   ©r#   rk   r   s      r   rs   rs   š  sF   € å ¤¨a¬hÑ7Ô7€D„LØÔð !ð !ˆØ ˆŒ�Q‰ˆÝ�”ÑÔÐr   Úhmtxc                 ól   — t          | j        |j        ¦  «        | _        |j        D ]}d| j        |<   ŒdS )NrÔ  T)r,   rÕ  r$   rÖ  r×  s      r   rs   rs   ¢  s;   € å ¤¨a¬hÑ7Ô7€D„LØÔð !ð !ˆØ ˆŒ�Q‰ˆØˆ4r   Úhdmxc                 óÈ   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         | j         D ]}‰j        D ]}d| j         |         |<   ŒŒt          | j         ¦  «        S )Nc                 óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS r   )r,   r$   )r   Úszr1   rk   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>¬  s+   ø€ ÐNÐNÐN±5°2°q�•\ ! Q¤XÑ.Ô.ÐNÐNÐNr   r   )rÚ  rT   rÖ  rq   )r#   rk   rÝ  r   s    `  r   rs   rs   ª  ss   ø€ àNÐNÐNÐN¸D¼I¿OºOÑ<MÔ<MÐNÑNÔN€D„IØŒið !ð !ˆØÔ!ð 	!ð 	!ˆAØ ˆDŒI�bŒM˜!ÑÐð	!å�”	‰?Œ?Ðr   Úankrc                 ó¶   ‡— | j         j        Š‰j        dk    sJ d‰j        z  ¦   «         ‚ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S )Nr   zunknown 'ankr' format %sc                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚAnchors©r   ru   r³  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>·  s5   ø€ ð ð ð Ø(-¸UÀeÄmÐ=SÐ=SˆˆuŒ}˜UÔ#Ð=SÐ=SÐ=Sr   )r³  ÚAnchorPointsr�   r$   rá  r4   ©r#   rk   r³  s     @r   rs   rs   ³  ss   ø€ àŒJÔ#€EØŒ<˜1ÒÐÐÐ8¸5¼<ÑGÑÔÐðð ð ð Ø12´ðñ ô €E„Mõ ˆuŒ}ÑÔ Ò!Ð!r   Úbslnc                 ór   — | j         j        }|j        dv r!|j                             |j        ¦  «         d S d S )N)r©   rª   )r³  ÚBaseliner�   r$   r·  ÚStandardGlyphrä  s      r   rl   rl   ½  s>   € àŒJÔ€EØ„|�vÐÐØ	Œ�Š�UÔ(Ñ)Ô)Ð)Ð)Ð)ð Ðr   c                 ó¬  ‡‡— | j         j        Š‰j        dv r¼ˆfd„|j        D ¦   «         }t	          |¦  «        dk    rdt          |                     ¦   «         ¦  «                             d¦  «        d         \  Š}‰‰_        ˆfd„| 	                    ¦   «         D ¦   «         }t	          |¦  «        dk    r|‰_
        ndddœ‰j                 ‰_        ‰`
dS )N)r˜   rª   c                 óR   •— i | ]#}|‰j                              |‰j        ¦  «        “Œ$S r   )ÚBaselineValuesrð  ÚDefaultBaselinerâ  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>È  sA   ø€ ð 
ð 
ð 
àð �5Ô'×+Ò+¨E°5Ô3HÑIÔIð
ð 
ð 
r   r   r˜   c                 ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   ru   r  Ú
mostCommons      €r   r+   z!subset_glyphs.<locals>.<dictcomp>Ï  s$   ø€ ÐWÐWÐW¡h e¨QÀqÈJÂÀ˜ ÀÀÀr   r©   T)r³  rç  r�   r$   r4   r   r^   Úmost_commonrì  rT   rë  )r#   rk   Ú	baselinesÚ_cntrî  r³  s       @@r   rs   rs   Ä  sï   øø€ àŒJÔ€EØ„|�vÐÐð
ð 
ð 
ð 
àœð
ñ 
ô 
ˆ	õ ˆy‰>Œ>˜AÒÐÝ& y×'7Ò'7Ñ'9Ô'9Ñ:Ô:×FÒFÀqÑIÔIÈ!ÔLÑˆJ˜Ø$.ˆEÔ!ØWÐWÐWÐW°)·/²/Ñ2CÔ2CÐWÑWÔWˆIÝˆy‰>Œ>˜AÒÐØ#,ˆEÔ Ð à  Q˜<˜<¨¬Ô5ˆEŒLØÐ$Øˆ4r   Úlcarc                 ó²   ‡— | j         j        Š‰j        dv r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S J d‰j        z  ¦   «         ‚)N)r   r˜   c                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚCaretsrâ  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>Ü  s5   ø€ ð 
ð 
ð 
Ø+0ÀÈÌÐ@UÐ@UˆE�5”< Ô&Ð@UÐ@UÐ@Ur   r   Fzunknown 'lcar' format %s)r³  ÚLigatureCaretsr�   r$   rõ  r4   rä  s     @r   rs   rs   Ø  ss   ø€ àŒJÔ%€EØ„|�vÐÐð
ð 
ð 
ð 
Ø45´Hð
ñ 
ô 
ˆŒõ �5”<Ñ Ô  1Ò$Ð$à?Ð0°5´<Ñ?Ñ?Ô?Ð?r   Úgvarc                 óL   — |j         r|j        sg | j        |j        d         <   dS ©Nr   T)Únotdef_glyphÚnotdef_outlineÚ
variationsÚ
glyphOrderr/  s      r   r¡  r¡  ä  s/   € àÔð 1 GÔ$:ð 1Ø.0ˆŒ˜œ¨Ô*Ñ+Øˆ4r   c                 óš   — t          | j        |j        ¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r,   rü  r$   r4   Ú
glyphCountrq   rr   s     r   rs   rs   ë  s8   € å" 4¤?°A´HÑ=Ô=€D„OÝ˜$œ/Ñ*Ô*€D„OÝ�”Ñ Ô Ð r   c                 óä   ‡— ˆfd„|j                              ¦   «         D ¦   «         }‰|j         | j                          }| j                             ¦   «         D ]\  }}|| j        k    r|nd||<   Œ|S )Nc                 ó(   •— i | ]\  }}|‰|         “ŒS r   r   )r   r¥  rR   rÃ  s      €r   r+   z$_remap_index_map.<locals>.<dictcomp>ó  s#   ø€ ÐCÐCÐC¡  AˆAˆz˜!Œ}ÐCÐCÐCr   r   )ri   rT   Úlast_retained_glyphÚreverseEmptiedGlyphMapÚlast_retained_order)rk   rÃ  Ú	table_mapÚmap_Úlast_idxr   r/   s    `     r   Ú_remap_index_mapr  ò  s…   ø€ ØCÐCÐCÐC¨Ô):×)@Ò)@Ñ)BÔ)BÐCÑCÔC€Dð ˜)Ô+¨AÔ,AÔBÔC€HØÔ(×.Ò.Ñ0Ô0ð ?ð ?‰ˆˆ1Ø !Ô"7Ò7Ð7�(�(¸QˆˆQ‰ˆØ€Kr   ÚHVARc                 óT  — | j         }t          ¦   «         }t          ¦   «         }d}|j        r[t          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         nL|                     |j                             ¦   «         ¦  «         | 	                    ¦   «         }|j
        j        }|j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j                             |||¬¦  «        }|j        r t!          |||j        ¦  «        |j        _        |j        r t!          |||j        ¦  «        |j        _        |j        r t!          |||j        ¦  «        |j        _        dS ©NF)ÚretainFirstMapÚadvIdxesT)r³  r?   ÚAdvWidthMapr,   ri   r$   rh   r^   ÚreverseOrigGlyphMapÚcopyrÇ   Úretain_gidsÚLsbMapÚRsbMapr¼  r¾  r  ©r#   rk   r³  ÚusedÚ	advIdxes_ÚretainAdvMaprÃ  s          r   rs   rs   ý  sÏ  € àŒJ€Eå‰5Œ5€DÝ‘”€IØ€LàÔð -Ý$0°Ô1BÔ1JÈAÌHÑ$UÔ$UˆÔÔ!Ø�Š�EÔ%Ô-×4Ò4Ñ6Ô6Ñ7Ô7Ð7Ð7à�Š�AÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ø—I’I‘K”Kˆ	Ø”yÔ,ˆà„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2à”×/Ò/Ø˜\°Ið 0ñ ô €Jð Ôð WÝ$4°Q¸
ÀEÔDUÑ$VÔ$VˆÔÔ!Ø„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔð ˆ4r   ÚVVARc                 ód  — | j         }t          ¦   «         }t          ¦   «         }d}|j        r[t          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         nL|                     |j                             ¦   «         ¦  «         | 	                    ¦   «         }|j
        j        }|j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j                             |||¬¦  «        }|j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        dS r  )r³  r?   ÚAdvHeightMapr,   ri   r$   rh   r^   r  r  rÇ   r  ÚTsbMapÚBsbMapÚVOrgMapr¼  r¾  r  r  s          r   rs   rs   #	  s:  € àŒJ€Eå‰5Œ5€DÝ‘”€IØ€LàÔð -Ý%1°%Ô2DÔ2LÈaÌhÑ%WÔ%WˆÔÔ"Ø�Š�EÔ&Ô.×5Ò5Ñ7Ô7Ñ8Ô8Ð8Ð8à�Š�AÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ø—I’I‘K”Kˆ	Ø”yÔ,ˆà„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„}ð 4Ý ,¨U¬]Ô-BÀAÄHÑ MÔ MˆŒÔØ�Š�E”MÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3à”×/Ò/Ø˜\°Ið 0ñ ô €Jð Ôð YÝ%5°a¸ÀUÔEWÑ%XÔ%XˆÔÔ"Ø„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„}ð OÝ 0°°JÀÄÑ NÔ NˆŒÔð ˆ4r   ÚVORGc                 óŽ   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        | _        dS )Nc                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   rG   ro   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>P	  s-   ø€ ð ð ð Ù��A¸¸Q¼X¸¸ˆˆ1¸¸¸r   T)ÚVOriginRecordsrT   r4   ÚnumVertOriginYMetricsrr   s    `r   rs   rs   N	  sW   ø€ ðð ð ð ØÔ,×2Ò2Ñ4Ô4ðñ ô €DÔõ "% TÔ%8Ñ!9Ô!9€DÔØˆ4r   Úopbdc                 ó,  ‡— | j         j        Š‰j        dk    r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S ‰j        dk    r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S J d‰j        z  ¦   «         ‚)Nr   c                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚOpticalBoundsDeltasrâ  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>[	  ó;   ø€ ð %
ð %
ð %
àØ˜Ô1Ð1Ð1ð �5Ô,¨UÔ3à1Ð1Ð1r   r˜   c                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚOpticalBoundsPointsrâ  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>b	  r'  r   Fzunknown 'opbd' format %s)r³  ÚOpticalBoundsr�   r$   r&  r4   r)  rä  s     @r   rs   rs   W	  sÇ   ø€ àŒJÔ$€EØ„|�qÒÐð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1Ø	Œ˜Ò	Ð	ð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1à?Ð0°5´<Ñ?Ñ?Ô?Ð?r   Úpostc                 ó"   — |j         sd| _        dS )Nç      @T)Úglyph_namesÚ
formatTyper/  s      r   r¡  r¡  l	  s   € àÔð ØˆŒØˆ4r   c                 ó   — g | _         dS rø   )Ú
extraNamesrr   s     r   rs   rs   s	  s   € à€D„OØˆ4r   Úpropc                 óö  ‡‡— | j         j        Š‰j        dk    r‰j        dk    S ‰j        dk    r¹ˆfd„|j        D ¦   «         ‰_        t          ‰j                             ¦   «         ¦  «                             d¦  «        d         \  Š}‰‰_        ˆfd„‰j         	                    ¦   «         D ¦   «         ‰_        t          ‰j        ¦  «        dk    r‰`d‰_        ‰j        dk    S dS J d‰j        z  ¦   «         ‚)Nr   r˜   c                 óR   •— i | ]#}|‰j                              |‰j        ¦  «        “Œ$S r   )Ú
Propertiesrð  ÚDefaultProperties)r   r   r2  s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>	  s=   ø€ ð 
ð 
ð 
ØBCˆAˆtŒ×"Ò" 1 dÔ&<Ñ=Ô=ð
ð 
ð 
r   c                 ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   r   r2  rî  s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>„	  s0   ø€ ð 
ð 
ð 
Ù˜˜4¸dÀjÒ>PÐ>PˆAˆtÐ>PÐ>PÐ>Pr   TFzunknown 'prop' format %s)r³  ÚGlyphPropertiesr�   r6  r$   r5  r   r^   rï  rT   r4   )r#   rk   rñ  rî  r2  s      @@r   rs   rs   y	  s#  øø€ àŒ:Ô%€DØ„{�aÒÐØÔ%¨Ò*Ð*Ø	Œ˜Ò	Ð	ð
ð 
ð 
ð 
ØGHÄxð
ñ 
ô 
ˆŒõ # 4¤?×#9Ò#9Ñ#;Ô#;Ñ<Ô<×HÒHÈÑKÔKÈAÔNÑˆ
�DØ!+ˆÔð
ð 
ð 
ð 
Ø#'¤?×#8Ò#8Ñ#:Ô#:ð
ñ 
ô 
ˆŒõ ˆtŒÑÔ 1Ò$Ð$Ø�ØˆDŒKØÔ)¨QÒ.Ð.Øˆtà>Ð0°4´;Ñ>Ñ>Ô>Ð>r   c                 óZ   ‡— t          ¦   «         Šˆfd„}|                      ||¦  «         ‰S )Nc                 ó’   •— | j         t          j        j        t          j        j        hv r‰                     | j        ¦  «         d S d S r   )r�   r   ÚPaintFormatÚ
PaintGlyphÚPaintColrGlyphr·  ÚGlyph)ÚpaintÚresults    €r   Úcallbackz$_paint_glyph_names.<locals>.callback“	  sO   ø€ ØŒ<ÝÔ Ô+ÝÔ Ô/ð
ð 
ð 
ð �JŠJ�u”{Ñ#Ô#Ð#Ð#Ð#ð	
ð 
r   )r?   Útraverse)r?  ÚcolrrA  r@  s      @r   Ú_paint_glyph_namesrD  �	  s@   ø€ Ý‰UŒU€Fð$ð $ð $ð $ð $ð 
‡N‚N�4˜Ñ"Ô"Ð"Ø€Mr   ÚCOLRc                 ó4  — | j         dk    r?|                      | j        ¦  «        | _        d„ | j        j        j        D ¦   «         | _        |j        }|rÄt          ¦   «         }|D ]‰}| j         	                    |g ¦  «        D ]}| 
                    |j        ¦  «         Œ| j         dk    rD| j         	                    |¦  «        }|�(|                     t          || j        ¦  «        ¦  «         ŒŠ||j        z  }|j                             |¦  «         |}|°Âd S d S )Nr   c                 ó(   — i | ]}|j         |j        “ŒS r   )Ú	BaseGlyphÚPaint)r   rû   s     r   r+   z"closure_glyphs.<locals>.<dictcomp>¦	  s.   € ð 
ð 
ð 
àð ŒM˜3œ9ð
ð 
ð 
r   )ÚversionÚ_decompileColorLayersV0r³  ÚColorLayersÚBaseGlyphListÚBaseGlyphPaintRecordÚColorLayersV1r$   r?   rð  r·  r¶   rh   rD  )r#   rk   Ú	decomposeÚlayersr   Úlayerr?  s          r   rl   rl   ž	  sB  € à„|�aÒÐð
  ×7Ò7¸¼
ÑCÔCˆÔð
ð 
à”zÔ/ÔDð
ñ 
ô 
ˆÔð
 ”€IØ
ð Ý‘”ˆØð 	Ið 	IˆAØÔ)×-Ò-¨a°Ñ4Ô4ð 'ð '�Ø—
’
˜5œ:Ñ&Ô&Ð&Ð&àŒ|˜aÒÐØÔ*×.Ò.¨qÑ1Ô1�ØÐ$Ø—M’MÕ"4°U¸D¼JÑ"GÔ"GÑHÔHÐHøà�!”(ÑˆØ	Œ�Š˜ÑÔÐØˆ	ð ð ð ð ð ð r   c                 óh  ‡ ‡‡‡‡— ddl m} ddlm}m} ‰j        ‰_        ˆ fd„‰j        D ¦   «         ‰ _        ‰ j        dk    rt          ‰ j        ¦  «        S  |‰ j
        j        ‰ j
        j        ¦  «        Š |ˆˆfd„‰D ¦   «         ¦  «        \  ‰ j
        _        ‰ j
        _        ‰ `‰ j
        j        �/‰ j
        j        j        Šˆˆfd„‰D ¦   «         ‰ j
        j        _        ‰ j        Š‰ j
        j        j        sd‰ _        ‰ `
t          ‰¦  «        S  |‰ j
        ˆfd„‰D ¦   «         ¦  «         ‰ `dS )	Nr   )ÚunbuildColrV1)ÚbuildColrV1ÚpopulateCOLRv0c                 ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )rL  rO   s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>Ï	  s7   ø€ ð ð ð Ø#$°A¸Ô9IÐ4IÐ4Iˆˆ4Ô˜AÔÐ4IÐ4IÐ4Ir   c                 ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rG   )r   r   ÚcolorGlyphsV1rk   s     €€r   r+   z!subset_glyphs.<locals>.<dictcomp>×	  s'   ø€ ÐEÐEÐE °q¸A¼H°}°}ˆˆM˜!Ô°}°}°}r   c                 ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rG   )r   r   Úclipsrk   s     €€r   r+   z!subset_glyphs.<locals>.<dictcomp>Ý	  s&   ø€ Ð$QÐ$QÐ$Q°QÀ1ÈÌÀ=À= Q¨¨a¬À=À=À=r   c                 ó6   •— i | ]}|d „ ‰|         D ¦   «         “ŒS )c                 ó*   — g | ]}|j         |j        f‘ŒS r   )r¶   ÚcolorID)r   rR  s     r   r2   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>è	  s!   € ÐBÐBÐB¨UˆeŒj˜%œ-Ð(ÐBÐBÐBr   r   )r   r   ÚlayersV0s     €r   r+   z!subset_glyphs.<locals>.<dictcomp>è	  s.   ø€ ÐUÐUÐUÀqˆÐBÐB°h¸q´kÐBÑBÔBÐUÐUÐUr   T)ÚfontTools.colorLib.unbuilderrT  ÚfontTools.colorLib.builderrU  rV  Úglyphs_colredr$   rL  rJ  rq   r³  Ú	LayerListrM  rO  ÚClipListr[  rN  )r#   rk   rT  rU  rV  r[  rY  r_  s   ``   @@@r   rs   rs   ¼	  s‘  øøøøø€ à:Ð:Ð:Ð:Ð:Ð:ØFÐFÐFÐFÐFÐFÐFÐFð Œ€A„Hðð ð ð Ø()¬ðñ ô €DÔð „|�qÒÐÝ�DÔ$Ñ%Ô%Ð%à!�M $¤*Ô"6¸¼
Ô8PÑQÔQ€MØ5@°[ØEÐEÐEÐEÐE mÐEÑEÔEñ6ô 6Ñ2€D„JÔ˜$œ*Ô2ð 	Ðà„zÔÐ&Ø”
Ô#Ô)ˆØ$QÐ$QÐ$QÐ$QÐ$Q¸%Ð$QÑ$QÔ$QˆŒ
ÔÔ!àÔ€HØŒ:Ô#Ô8ð àˆŒØˆJÝ�H‰~Œ~Ðà€NØŒ
ØUÐUÐUÐUÈHÐUÑUÔUñô ð ð 	Ðð ˆ4r   ÚCPALc                 ó¤  ‡‡— d|v rdS |                      d¦  «        }|sdS t          t          ¦  «        Šˆfd„}|j        dk    rB|j                             ¦   «         D ]'}|D ]"}‰|j                                      |¦  «         Œ#Œ(nt|j        j	        r4|j        j	        j
        D ]"}‰|j                                      |¦  «         Œ#|j        j        j        D ]"}|j                             |j        |¦  «         Œ#t!          ‰                     ¦   «         ¦  «        dhz
  Š| j        D ]D}ˆfd„t'          |¦  «        D ¦   «         |d d …<   t)          |¦  «        t)          ‰¦  «        k    sJ ‚ŒEt'          t+          ‰¦  «        ¦  «        D ]N\  }	}
‰|
         D ]@}t-          |d	¦  «        r|	|_        Œt-          |d
¦  «        r|	|_        Œ2t/          |¦  «        ‚ŒOt)          | j        d         ¦  «        | _        | j        dk    r<g }t'          | j        ¦  «        D ]\  }}|‰v r|                     |¦  «         Œ|| _        t5          | j        ¦  «        S )NzSVG TrE  Fc                 óî   •— t          | d¦  «        r"‰| j                                      | ¦  «         d S t          | d¦  «        r/| j        j        D ]$}‰|j                                      |¦  «         Œ#d S d S )NÚPaletteIndexÚ	ColorLine)rœ  rh  rK  ri  Ú	ColorStop)r?  ÚstopÚcolors_by_indexs     €r   Úcollect_colors_by_indexz2prune_post_subset.<locals>.collect_colors_by_index 
  s˜   ø€ Ý�5˜.Ñ)Ô)ð 	@Ø˜EÔ.Ô/×6Ò6°uÑ=Ô=Ð=Ð=Ð=Ý�U˜KÑ(Ô(ð 	@ØœÔ1ð @ð @�Ø Ô 1Ô2×9Ò9¸$Ñ?Ô?Ð?Ð?ð	@ð 	@ð@ð @r   r   rD  c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   )r   r/   rŠ   Úretained_palette_indicess      €r   r2   z%prune_post_subset.<locals>.<listcomp>
  s(   ø€ ÐXÐXÐX™D˜A˜q¸!Ð?WÐ:WÐ:W�aÐ:WÐ:WÐ:Wr   r^  rh  r˜   )rð  r   r]   rJ  rL  r^   r^  rK  r³  ÚLayerRecordArrayÚLayerRecordrh  rM  rN  rI  rB  r?   ÚkeysÚpalettesr9   r4   r!   rœ  ÚAssertionErrorÚnumPaletteEntriesÚpaletteEntryLabelsrq   )r#   r%   rÇ   rC  rm  rQ  rR  r’  ÚpaletteÚ	new_indexÚ	old_indexÚkept_labelsr/   Úlabelrl  ro  s                 @@r   rÈ   rÈ   ð	  sÇ  øø€ ð �€~€~Øˆtà�8Š8�FÑÔ€DØð Øˆuå!¥$Ñ'Ô'€Oð@ð @ð @ð @ð @ð „|�qÒÐØÔ&×-Ò-Ñ/Ô/ð 	=ð 	=ˆFØð =ð =�Ø ¤Ô.×5Ò5°eÑ<Ô<Ð<Ð<ð=ð	=ð Œ:Ô&ð 	BØœÔ4Ô@ð Bð B�Ø Ô 2Ô3×:Ò:¸5ÑAÔAÐAÐAØ”jÔ.ÔCð 	Gð 	GˆFØŒL×!Ò! $¤*Ð.EÑFÔFÐFÐFõ  # ?×#7Ò#7Ñ#9Ô#9Ñ:Ô:¸f¸XÑEÐØ”=ð =ð =ˆØXÐXÐXÐX¥I¨gÑ$6Ô$6ÐXÑXÔXˆ���‰
Ý�7‰|Œ|�sÐ#;Ñ<Ô<Ò<Ð<Ð<Ð<Ð<å )­&Ð1IÑ*JÔ*JÑ KÔ Kð -ð -Ñˆ	�9Ø% iÔ0ð 	-ð 	-ˆFÝ�v˜yÑ)Ô)ð -Ø!*�”�Ý˜ Ñ0Ô0ð -Ø&/�Ô#Ð#å$ VÑ,Ô,Ð,ð	-õ ! ¤¨qÔ!1Ñ2Ô2€DÔà„|�qÒÐØˆÝ! $Ô"9Ñ:Ô:ð 	*ð 	*‰HˆAˆuØÐ,Ð,Ð,Ø×"Ò" 5Ñ)Ô)Ð)øØ"-ˆÔÝ�Ô&Ñ'Ô'Ð'r   c                 óÊ   — t          ¦   «         }| j        D ]}|                     |j        ¦  «         Œ| j        r)| j        j        D ]}|                     |j        ¦  «         Œ|S r   )r?   ÚMathGlyphVariantRecordr·  ÚVariantGlyphÚGlyphAssemblyÚPartRecordsru   )r#   r$   ÚvariantsrR   rÑ   s        r   rl   rl   -
  sp   € å‰uŒu€HØÔ(ð %ð %ˆØ�Š�Q”^Ñ$Ô$Ð$Ð$ØÔð "ØÔ#Ô/ð 	"ð 	"ˆAØ�LŠL˜œÑ!Ô!Ð!Ð!Ø€Or   c                 óâ  — t          |j        ¦  «        }t          ¦   «         }| j        rR| j                             |¦  «        }|D ]5}|                     | j        |                              |¦  «        ¦  «         Œ6| j        rR| j                             |¦  «        }|D ]5}|                     | j	        |                              |¦  «        ¦  «         Œ6|j                             |¦  «         d S r   )
r²  r$   r?   ÚVertGlyphCoverager;   rh   ÚVertGlyphConstructionrl   ÚHorizGlyphCoverageÚHorizGlyphConstruction)r#   rk   r$   r�  r5   r/   s         r   rl   rl   8
  sð   € å�q”xÑ Ô €FÝ‰uŒu€HàÔð RØÔ(×2Ò2°6Ñ:Ô:ˆØð 	Rð 	RˆAØ�OŠO˜DÔ6°qÔ9×HÒHÈÑPÔPÑQÔQÐQÐQàÔð SØÔ)×3Ò3°FÑ;Ô;ˆØð 	Sð 	SˆAØ�OŠO˜DÔ7¸Ô:×IÒIÈ&ÑQÔQÑRÔRÐRÐRà„H‡O‚O�HÑÔÐÐÐr   ÚVARCc                 óâ   — | j         j                             |j        ¦  «        }t	          | j         j        j        |¦  «        | j         j        _        t          | j         j        j        ¦  «        S r   )r³  rž   rD   r$   r6   ÚVarCompositeGlyphsÚVarCompositeGlyphrq   r¦   s      r   rs   rs   J
  sX   € àŒjÔ!×(Ò(¨¬Ñ2Ô2€GÝ6BØŒ
Ô%Ô7¸ñ7ô 7€D„JÔ!Ô3õ �”
Ô-Ô?Ñ@Ô@Ð@r   c                 óÚ  — | j         j        €d S d„ t          | j         j        j        ¦  «        D ¦   «         }| j         j        j        }|j        }t          ¦   «         }t          |¦  «        }|r}|}t          ¦   «         }|D ]f}||v rŒ|                     |¦  «        }	|	€Œ||	         }
|
j        D ]7}|j	        }| 
                    |¦  «         ||vr| 
                    |¦  «         Œ8Œg|°{d S d S )Nc                 ó   — i | ]\  }}||“Œ	S r   r   )r   r/   Ú	glyphNames      r   r+   z"closure_glyphs.<locals>.<dictcomp>X
  s   € ÐWÐWÐW¡  I�	˜1ÐWÐWÐWr   )r³  r‰  r9   rž   r$   rŠ  r?   rð  Ú
componentsr�  r·  )r#   rk   ÚglyphMapÚglyphRecordsr$   rõ  ÚnewÚoldNewr�  Úidxru   Úcompr¶   s                r   rl   rl   S
  s  € à„zÔ$Ð,ØˆàWÐWµ¸4¼:Ô;NÔ;UÑ1VÔ1VÐWÑWÔW€HØ”:Ô0ÔB€LàŒX€FÝ‰eŒe€GÝ
ˆf‰+Œ+€CØ
ð "ØˆÝ‰eŒeˆØð 	"ð 	"ˆIØ˜GÐ#Ð#ØØ—,’,˜yÑ)Ô)ˆCØˆ{ØØ  Ô%ˆEØÔ(ð "ð "�Ø”~�Ø—
’
˜4Ñ Ô Ð Ø˜wÐ&Ð&Ø—G’G˜D‘M”M�Møð	"ð ð "ð "ð "ð "ð "r   c                 óâ  — | j         }|j        }|�Mt          ¦   «         }|                     |¦  «         |                     |¦  «        }|                     |¦  «         |j        j        }|�¼t          ¦   «         }|j        j	        D ]-}	|	j
        D ]#}
|
j        �|                     |
j        ¦  «         Œ$Œ.t          |¦  «        }t          ||¦  «        |j        _        d„ t          |¦  «        D ¦   «         }|j        j	        D ]%}	|	j
        D ]}
|
j        �||
j                 |
_        ŒŒ&|j        }|�¾|j        }t          ¦   «         }|j        j	        D ]-}	|	j
        D ]#}
|
j        �|                     |
j        ¦  «         Œ$Œ.t          |¦  «        }t          ||¦  «        |_        d„ t          |¦  «        D ¦   «         }|j        j	        D ]%}	|	j
        D ]}
|
j        �||
j                 |
_        ŒŒ&dS )Nc                 ó   — i | ]\  }}||“Œ	S r   r   ©r   r‘  Úolds      r   r+   z%prune_post_subset.<locals>.<dictcomp>ƒ
  ó   € ÐCÐCÐC¡  S�3˜ÐCÐCÐCr   c                 ó   — i | ]\  }}||“Œ	S r   r   r—  s      r   r+   z%prune_post_subset.<locals>.<dictcomp>“
  r™  r   T)r³  ÚMultiVarStorer?   Úcollect_varidxesr¾  Úremap_varidxesÚAxisIndicesListÚItemr‰  rŠ  rŽ  ÚaxisIndicesIndexr·  r!   r6   r9   ÚConditionListÚConditionTableÚconditionIndex)r#   r%   rÇ   r³  rÁ  rÂ  rÃ  ÚaxisIndicesListÚusedIndicesru   r”  ri   ÚconditionListÚconditionTabless                 r   rÈ   rÈ   o
  sD  € àŒJ€EàÔ€EØÐÝ‘u”uˆØ×Ò˜|Ñ,Ô,Ð,Ø×*Ò*¨<Ñ8Ô8ˆ
Ø×Ò˜ZÑ(Ô(Ð(àÔ+Ô0€OØÐ"Ý‘e”eˆØÔ-Ô?ð 	;ð 	;ˆEØÔ(ð ;ð ;�ØÔ(Ð4Ø—O’O DÔ$9Ñ:Ô:Ð:øð;õ ˜[Ñ)Ô)ˆÝ%1°/À;Ñ%OÔ%OˆÔÔ"ØCÐC­I°kÑ,BÔ,BÐCÑCÔCˆØÔ-Ô?ð 	Kð 	KˆEØÔ(ð Kð K�ØÔ(Ð4Ø,3°DÔ4IÔ,J�DÔ)øðKð Ô'€MØÐ Ø'Ô6ˆÝ‘e”eˆØÔ-Ô?ð 	9ð 	9ˆEØÔ(ð 9ð 9�ØÔ&Ð2Ø—O’O DÔ$7Ñ8Ô8Ð8øð9õ ˜[Ñ)Ô)ˆÝ'3°OÀ[Ñ'QÔ'QˆÔ$ØCÐC­I°kÑ,BÔ,BÐCÑCÔCˆØÔ-Ô?ð 	Gð 	GˆEØÔ(ð Gð G�ØÔ&Ð2Ø*1°$Ô2EÔ*F�DÔ'øðGð ˆ4r   ÚMATHc                 ó`   — | j         j        r!| j         j                             |¦  «         d S d S r   )r³  ÚMathVariantsrl   rr   s     r   rl   rl   œ
  s8   € à„zÔð 2ØŒ
Ô×.Ò.¨qÑ1Ô1Ð1Ð1Ð1ð2ð 2r   c                 óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )rž   rD   r$   r6   ÚItalicsCorrectionr4   ÚItalicsCorrectionCountrq   r¦   s      r   rs   rs   ¢
  sR   € àŒm×"Ò" 1¤8Ñ,Ô,€GÝ)¨$Ô*@À'ÑJÔJ€DÔÝ"% dÔ&<Ñ"=Ô"=€DÔÝ�Ô+Ñ,Ô,Ð,r   c                 óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )ÚTopAccentCoveragerD   r$   r6   ÚTopAccentAttachmentr4   ÚTopAccentAttachmentCountrq   r¦   s      r   rs   rs   ª
  sS   € àÔ$×+Ò+¨A¬HÑ5Ô5€GÝ+¨DÔ,DÀgÑNÔN€DÔÝ$'¨Ô(@Ñ$AÔ$A€DÔ!Ý�Ô-Ñ.Ô.Ð.r   c                 óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )ÚMathKernCoveragerD   r$   r6   ÚMathKernInfoRecordsr4   ÚMathKernCountrq   r¦   s      r   rs   rs   ²
  sS   € àÔ#×*Ò*¨1¬8Ñ4Ô4€GÝ+¨DÔ,DÀgÑNÔN€DÔÝ˜TÔ5Ñ6Ô6€DÔÝ�Ô"Ñ#Ô#Ð#r   c                 ó  — | j         r| j                              |¦  «         | j        r| j                             |¦  «         | j        r| j                             |¦  «         | j        r| j                             |j        ¦  «         dS rø   )ÚMathItalicsCorrectionInfors   ÚMathTopAccentAttachmentÚMathKernInfoÚExtendedShapeCoveragerD   r$   rr   s     r   rs   rs   º
  s‘   € àÔ%ð 8ØÔ&×4Ò4°QÑ7Ô7Ð7ØÔ#ð 6ØÔ$×2Ò2°1Ñ5Ô5Ð5ØÔð +ØÔ×'Ò'¨Ñ*Ô*Ð*ØÔ!ð 4ØÔ"×)Ò)¨!¬(Ñ3Ô3Ð3Øˆ4r   c                 ój  — | j         rR| j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        | j        rR| j                             |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _	        dS rø   )
rƒ  rD   r$   r6   r„  r4   ÚVertGlyphCountr…  r†  ÚHorizGlyphCountr¦   s      r   rs   rs   Ç
  sŸ   € àÔð >ØÔ(×/Ò/°´Ñ9Ô9ˆÝ%1°$Ô2LÈgÑ%VÔ%VˆÔ"Ý! $Ô"<Ñ=Ô=ˆÔàÔð @ØÔ)×0Ò0°´Ñ:Ô:ˆÝ&2°4Ô3NÐPWÑ&XÔ&XˆÔ#Ý" 4Ô#>Ñ?Ô?ˆÔàˆ4r   c                 óÊ   — |j         |_        | j        j        r| j        j                             |¦  «         | j        j        r| j        j                             |¦  «         dS rø   )Úglyphs_mathedr$   r³  ÚMathGlyphInfors   rª  rr   s     r   rs   rs   Ö
  s\   € àŒ€A„HØ„zÔð 2ØŒ
Ô ×.Ò.¨qÑ1Ô1Ð1Ø„zÔð 1ØŒ
Ô×-Ò-¨aÑ0Ô0Ð0Øˆ4r   Úglyfc                 óê  — | j         r,t          j        d| j         d d…         ¦  «        d         dk    rd S t          | j         ¦  «        x}| _         d}d}|rœ||         dz  ||dz            z  }||dz            dz  ||dz            z  }||         }|dz	  ||dz   <   |dz  ||dz   <   |d	z  }t	          |¦  «        }|dz  r|d	z  }n|dz  }|dz  r|dz  }n|d
z  r|d	z  }n
|dz  r|dz  }|dz  }|°šd S d S )Nz>hr©   r   é
   r˜   é   rª   éÿ   rŒ  é@   é€   é    )ÚdataÚstructÚunpackÚ	bytearrayrÅ   )r#   Ú
glyphidmaprÉ  r/   ÚmoreÚflagsÚglyphIDs          r   ÚremapComponentsFastrÑ  à
  sa  € àŒ9ð �œ d¨D¬I°b°q°b¬MÑ:Ô:¸1Ô=ÀÒBÐBØˆÝ  ¤Ñ+Ô+Ð+€Dˆ4Œ9Ø
€AØ€DØ
ð Ø�a”˜A‘  a¨!¡e¤Ñ,ˆØ˜˜A™”; !Ñ# t¨A°©E¤{Ñ2ˆà˜WÔ%ˆØ ‘lˆˆQ�‰U‰Ø ‘nˆˆQ�‰U‰Ø	ˆQ‰ˆÝ�E‘
”
ˆà�6‰>ð 	Ø�‰FˆAˆAà�‰FˆAØ�6‰>ð 	Ø�‰FˆAˆAØ�V‰^ð 	Ø�‰FˆAˆAØ�V‰^ð 	Ø�‰FˆAØ�v‰~ˆð) ð ð ð ð ð r   c                 ó  — | j         }|j         }|rwt          ¦   «         }|D ]<}||vrŒ||         }|                     | ¦  «        D ]}|                     |¦  «         ŒŒ=||j         z  }|j                              |¦  «         |}|°ud S d S r   )r$   r?   ÚgetComponentNamesr·  rh   )r#   rk   ÚglyphSetrP  rŽ  r   ÚglrŠ   s           r   rl   rl   þ
  sÁ   € àŒ{€HØ”€IØ
ð 
Ý‘U”Uˆ
Øð 	"ð 	"ˆAØ˜Ð Ð ØØ˜!”ˆBØ×)Ò)¨$Ñ/Ô/ð "ð "�Ø—’˜qÑ!Ô!Ð!Ð!ð"à�a”hÑˆ
Ø	Œ�Š˜
Ñ#Ô#Ð#Øˆ	ð ð 
ð 
ð 
ð 
ð 
r   c                 óˆ   — |j         r:|j        s3| | j        d                  }|j                             ¦   «          d|_        dS )Nr   r   T)rú  rû  rý  Ú__dict__ÚclearrÉ  )r#   r%   rÇ   r   s       r   r¡  r¡    sH   € àÔð  GÔ$:ð Ø�” Ô#Ô$ˆà	Œ
×ÒÑÔÐØˆŒØˆ4r   c                 ó  ‡— t          | j        ‰j        ¦  «        | _        ‰j        j        szˆfd„t	          | j        ¦  «        D ¦   «         }d„ t	          |¦  «        D ¦   «         }| j                             ¦   «         D ]'}t          |d¦  «        r|                     |¦  «         Œ(t          j
        d¦  «        j        }‰j        D ]&} |¦   «         | j        |<   d| j        |         _        Œ'ˆfd„| j        D ¦   «         | _        dS )Nc                 ó,   •— g | ]\  }}|‰j         v ¯|‘ŒS r   rG   )r   r/   r   rk   s      €r   r2   z!subset_glyphs.<locals>.<listcomp>  s$   ø€ ÐMÐMÐM™˜˜A¸qÀAÄH¸}¸}�1¸}¸}¸}r   c                 ó   — i | ]\  }}||“Œ	S r   r   )r   rd  Úos      r   r+   z!subset_glyphs.<locals>.<dictcomp>  s   € Ð8Ð8Ð8™T˜Q �A�qÐ8Ð8Ð8r   rÉ  rÁ  r   c                 ó8   •— g | ]}|‰j         v s	|‰j        v ¯|‘ŒS r   )r$   rÖ  rÈ  s     €r   r2   z!subset_glyphs.<locals>.<listcomp>&  s7   ø€ ð ð ð Ø a¨1¬8 m m°q¸AÔ<LÐ7LÐ7LˆÐ7LÐ7LÐ7Lr   T)r,   r$   rÇ   r  r9   rý  r^   rœ  rÑ  r   ÚgetTableModuler>  rÖ  rÉ  )r#   rk   r5   ÚglyphmaprR   r>  r   s    `     r   rs   rs     s!  ø€ å˜tœ{¨A¬HÑ5Ô5€D„KØŒ9Ô ð 0ØMÐMÐMÐM¥¨4¬?Ñ!;Ô!;ÐMÑMÔMˆØ8Ð8¥Y¨wÑ%7Ô%7Ð8Ñ8Ô8ˆØ”×#Ò#Ñ%Ô%ð 	0ð 	0ˆAÝ�q˜&Ñ!Ô!ð 0Ø×%Ò% hÑ/Ô/Ð/øÝÔ  Ñ(Ô(Ô.€EØÔð "ð "ˆØ˜™œˆŒ�A‰Ø!ˆŒ�AŒÔÐðð ð ð Ø”?ðñ ô €D„Oð ˆ4r   c                 óz   — |j          }| j                             ¦   «         D ]}|                     |¬¦  «         ŒdS )N)Úremove_hintingT)rÄ   r$   r^   Útrim)r#   r%   rÇ   rá  rR   s        r   rÈ   rÈ   -  sE   € à œÐ(€NØŒ[×ÒÑ!Ô!ð .ð .ˆØ	�Š˜nˆÑ-Ô-Ð-Ð-Øˆ4r   Úcmapc                 óX  ‡‡— d„ | j         D ¦   «         }|D ]Ñ}|j        dk    rk|j                             ¦   «         D ]P\  }Š|‰j        vrŒˆfd„‰D ¦   «         }d |v r|                     d ¦  «         ‰j                             |¦  «         ŒQŒx|j        Š‰j         	                    ‰ 
                    ¦   «         ¦  «        }‰j                             ˆfd„|D ¦   «         ¦  «         ŒÒ‰j                             ¦   «         ‰_        |D ]!}‰j                             |j        ¦  «         Œ"d S )Nc                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   ©Ú	isUnicoderÌ  s     r   r2   z"closure_glyphs.<locals>.<listcomp>7  s%   € Ð6Ð6Ð6�A¨¯ª©¬Ð6ˆaÐ6Ð6Ð6r   é   c                 ó,   •— h | ]\  }}|‰j         v ¯|’ŒS r   ©Úunicodes_requested©r   Úur   rk   s      €r   ú	<setcomp>z!closure_glyphs.<locals>.<setcomp>?  s*   ø€ ÐJÐJÐJ¡  1°°QÔ5IÐ0IÐ0I˜!Ð0IÐ0IÐ0Ir   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   )r   rí  rã  s     €r   r   z!closure_glyphs.<locals>.<genexpr>F  s'   øè è € Ð:Ð:¨˜D œGÐ:Ð:Ð:Ð:Ð:Ð:r   )ÚtablesÚformatÚuvsDictrT   rë  r£  r$   rh   rã  rá   rr  r  Úunicodes_missingÚdifference_update)r#   rk   rð  r³  ÚvarSelectorr$   rá   rã  s    `     @r   rl   rl   5  s[  øø€ à6Ð6˜œÐ6Ñ6Ô6€Fð ð ;ð ;ˆØŒ<˜2ÒÐØ%*¤]×%8Ò%8Ñ%:Ô%:ð (ð (Ñ!�˜TØ aÔ&:Ð:Ð:ØØJÐJÐJÐJ¨ÐJÑJÔJ�Ø˜6�>�>Ø—M’M $Ñ'Ô'Ð'Ø”—’ Ñ'Ô'Ð'Ð'ð(ð ”:ˆDØÔ/×<Ò<¸T¿YºY¹[¼[ÑIÔIˆLØŒH�OŠOÐ:Ð:Ð:Ð:¨\Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:ð Ô-×2Ò2Ñ4Ô4€AÔØð 9ð 9ˆØ	Ô×,Ò,¨U¬ZÑ8Ô8Ð8Ð8ð9ð 9r   c                 óØ   — |j         sd„ | j        D ¦   «         | _        |j        sd„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        t          | j        ¦  «        | _        dS )Nc                 ób   — g | ],}|                      ¦   «         s|                     ¦   «         ¯*|‘Œ-S r   )rç  ÚisSymbolrÌ  s     r   r2   z$prune_pre_subset.<locals>.<listcomp>R  s2   € ÐOÐOÐO˜Q°·²±´ÐOÀ!Ç*Â*Á,Ä,ÐO�qÐOÐOÐOr   c                 ó:   — g | ]}|                      ¦   «         °|‘ŒS r   )rø  rÌ  s     r   r2   z$prune_pre_subset.<locals>.<listcomp>T  s%   € ÐBÐBÐB˜Q°Q·Z²Z±\´\ÐB�qÐBÐBÐBr   c                 ó(   — g | ]}|j         d k    ¯|‘ŒS )r   )rñ  rÌ  s     r   r2   z$prune_pre_subset.<locals>.<listcomp>W  s   € Ð;Ð;Ð;˜¨Q¬X¸ª]¨]�1¨]¨]¨]r   T)Úlegacy_cmaprð  Úsymbol_cmapr4   ÚnumSubTablesr/  s      r   r¡  r¡  N  sx   € àÔð PàOÐO $¤+ÐOÑOÔOˆŒØÔð CØBÐB $¤+ÐBÑBÔBˆŒð <Ð;˜dœkÐ;Ñ;Ô;€D„KÝ˜DœKÑ(Ô(€DÔØˆ4r   c                 ó¢  ‡— d ‰_         g }i }i }| j        D �]\}|j        dk    r|j        dk    r
|||j        <   |j        dk    r|j        dk    r
|||j        <   |j        dk    rSˆfd„|j                             ¦   «         D ¦   «         |_        d„ |j                             ¦   «         D ¦   «         |_        Œ¡|                     ¦   «         r}ˆfd„|j	                             ¦   «         D ¦   «         |_	        |j        dk    rF|j	        r?t          |j	                             ¦   «         ¦  «        d	k     r|                     |¦  «         �Œ2ˆfd
„|j	                             ¦   «         D ¦   «         |_	        �Œ^|D ]©}|j        dk    rI|j        dk    r>|j        |v r5||j                 j	        |j	        k    r|j	                             ¦   «          ŒV|j        dk    rH|j        dk    r=|j        |v r4||j                 j	        |j	        k    r|j	                             ¦   «          Œªd„ | j        D ¦   «         | _        t          | j        ¦  «        | _        dS )Nr   rª   r˜   rè  c                 óF   •— i | ]\  }}|‰j         v ¯|ˆfd „|D ¦   «         “ŒS )c                 óB   •— g | ]\  }}|‰j         v s	|‰j        v ¯||f‘ŒS r   ©Úglyphs_requestedrë  rì  s      €r   r2   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>o  sF   ø€ ð ð ð á˜˜1Ø˜AÔ.Ð.Ð.°!°qÔ7KÐ2KÐ2Kð ˜�Fà2KÐ2KÐ2Kr   rê  )r   rR   r1   rk   s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>n  s_   ø€ ð ð ð ñ �A�qØ˜Ô,Ð,Ð,ð ð ð ð ð à !ðñ ô ð -Ð,Ð,r   c                 ó   — i | ]
\  }}|¯||“ŒS r   r   )r   rR   r1   s      r   r+   z!subset_glyphs.<locals>.<dictcomp>w  s#   € ÐAÐAÐA¡$ ! Q¸qÐA˜˜AÐAÐAÐAr   c                 ó@   •— i | ]\  }}|‰j         v s	|‰j        v ¯||“ŒS r   r  rì  s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>y  sD   ø€ ð ð ð á�A�qØ˜Ô*Ð*Ð*¨a°1Ô3GÐ.GÐ.Gð �1à.GÐ.GÐ.Gr   é   r¨  c                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   )r  rì  s      €r   r+   z!subset_glyphs.<locals>.<dictcomp>ƒ  s,   ø€ ÐQÐQÐQ™t˜q !¸¸aÔ>PÐ9PÐ9P�a˜Ð9PÐ9PÐ9Pr   rŒ  rÃ  c                 óF   — g | ]}|j         d k    r|j        ¯n|j        ¯|‘ŒS )rè  )rñ  rã  rò  rÌ  s     r   r2   z!subset_glyphs.<locals>.<listcomp>—  s-   € ÐWÐWÐW˜¸¼ÀBº¸¨a¬f¸¸ÈAÌI¸�1¸¸¸r   T)r$   rð  Ú
platformIDÚ	platEncIDÚlanguagerñ  rò  rT   rç  rã  Úmaxrr  rK  rØ  r4   rý  )r#   rk   Útables_format12_bmpÚtable_plat0_enc3Útable_plat3_enc1rÍ  s    `    r   rs   rs   \  st  ø€ à€A„HàÐØÐØÐàŒ[ð Rñ RˆØŒ<˜1ÒÐ ¤°Ò!1Ð!1Ø+,Ð˜QœZÑ(ØŒ<˜1ÒÐ ¤°Ò!1Ð!1Ø+,Ð˜QœZÑ(àŒ8�rŠ>ˆ>ðð ð ð ð œIŸOšOÑ-Ô-ðñ ô ˆAŒIð BÐA¨!¬)¯/ª/Ñ*;Ô*;ÐAÑAÔAˆAŒIˆIØ�[Š[‰]Œ]ð 	Rðð ð ð àœFŸLšL™NœNðñ ô ˆAŒFð Œx˜2Š~ˆ~ !¤&ˆ~­S°´·²±´Ñ-?Ô-?À'Ò-IÐ-IØ#×*Ò*¨1Ñ-Ô-Ð-ùàQÐQÐQÐQ q¤v§|¢|¡~¤~ÐQÑQÔQˆAŒF‰Fð !ð ð ˆàŒL˜AÒÐØ”˜qÒ Ð Ø”
Ð.Ð.Ð.Ø  ¤Ô,Ô1°Q´VÒ;Ð;àŒF�LŠL‰NŒNˆNˆNàŒL˜AÒÐØ”˜rÒ!Ð!Ø”
Ð.Ð.Ð.Ø  ¤Ô,Ô1°Q´VÒ;Ð;àŒF�LŠL‰NŒNˆNøàWÐW˜dœkÐWÑWÔW€D„KÝ˜DœKÑ(Ô(€DÔð ˆ4r   ÚDSIGc                 ó"   — d| _         g | _        dS rù  )Ú	usNumSigsÚsignatureRecordsr/  s      r   r¡  r¡  Ÿ  s   € ð €D„NØ€DÔØˆ4r   Úmaxpc                 óŒ   — |j         s<| j        dk    r1d| _        d| _        d| _        d| _        d| _        d| _        d| _        dS )Nr¨  r˜   r   T)	rÄ   ÚtableVersionÚmaxZonesÚmaxTwilightPointsÚ
maxStorageÚmaxFunctionDefsÚmaxInstructionDefsÚmaxStackElementsÚmaxSizeOfInstructionsr/  s      r   r¡  r¡  §  sU   € àŒ?ð +ØÔ 
Ò*Ð*ØˆDŒMØ%&ˆDÔ"ØˆDŒOØ#$ˆDÔ Ø&'ˆDÔ#Ø$%ˆDÔ!Ø)*ˆDÔ&Øˆ4r   r¶   c                 óî  ‡‡— t          ¦   «         }|                     |¦  «         t          ‰j        ¦  «        |j        z  Šd‰j        v r‰d„ | j        D ¦   «         z  Šˆfd„| j        D ¦   «         | _        ‰j        sd„ | j        D ¦   «         | _        d‰j        vrˆfd„| j        D ¦   «         | _        ‰j        r¹g }| j        D ]¨}|j	        dv r1| 
                    ¦   «         rd                     d¦  «        nd|_        nW|j	        d	v r1| 
                    ¦   «         rd
                     d¦  «        nd
|_        n|j	        dk    rd|_        n
|j	        dv rŒ“|                     |¦  «         Œ©|| _        dS )Nr   c                 ó2   — h | ]}|j         d k     ¯|j         ’ŒS )é   ©ÚnameID©r   rd  s     r   rî  z$prune_post_subset.<locals>.<setcomp>»  s!   € ÐCÐCÐC °A´H¸s²N°N�A”H°N°N°Nr   c                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   r   )r   rd  ÚnameIDss     €r   r2   z%prune_post_subset.<locals>.<listcomp>¼  s%   ø€ Ð?Ð?Ð?˜¨1¬8°wÐ+>Ð+>�!Ð+>Ð+>Ð+>r   c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   ræ  r"  s     r   r2   z%prune_post_subset.<locals>.<listcomp>À  s%   € Ð=Ð=Ð=˜A¨q¯{ª{©}¬}Ð=�aÐ=Ð=Ð=r   c                 ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚlangIDÚname_languages)r   rd  rÇ   s     €r   r2   z%prune_post_subset.<locals>.<listcomp>Ä  s(   ø€ ÐRÐRÐR˜A¨q¬x¸7Ô;QÐ/QÐ/Q�aÐ/QÐ/QÐ/Qr   )r˜   rŒ  z.Ú	utf_16_be)r©   é   úrª   r;  )é   é   é   T)r   Úvisitr?   Úname_IDsÚseenrf  Úname_legacyr(  Úobfuscate_namesr!  rç  ÚencodeÚstringrK  )r#   r%   rÇ   ÚvisitorÚnamerecsrd  r$  s     `   @r   rÈ   rÈ   µ  s›  øø€ åÑ!Ô!€GØ‡M‚M�$ÑÔÐÝ�'Ô"Ñ#Ô# g¤lÑ2€GØ
ˆgÔÐÐØÐCÐC d¤jÐCÑCÔCÑCˆØ?Ð?Ð?Ð?˜TœZÐ?Ñ?Ô?€D„JØÔð >ð >Ð= ¤Ð=Ñ=Ô=ˆŒ
à
�'Ô(Ð(Ð(àRÐRÐRÐR ¤ÐRÑRÔRˆŒ
ØÔð ØˆØ”ð 		ð 		ˆAØŒx˜6Ð!Ð!Ø:;¿+º+¹-¼-ÐT˜7Ÿ>š>¨+Ñ6Ô6Ð6ÈW�”�Ø”˜VÐ#Ð#Ø9:¿º¹¼ÐR˜6Ÿ=š=¨Ñ5Ô5Ð5ÈF�”�Ø”˜Q’�Ø�”�Ø”˜\Ð)Ð)ØØ�OŠO˜AÑÔÐÐØˆŒ
Øˆ4r   Úheadc                 ó   — dS rø   r   r/  s      r   rÈ   rÈ   Õ  s	   € ð ˆ4r   c                   ó8  — e Zd Z G d„ de¦  «        Z G d„ de¦  «        Zg d¢Zeg d¢z  Zg d¢Zg d¢Zg d	¢g d
¢g d¢g d¢ddgddgdgdgg d¢g d¢g d¢g d¢g d¢g d¢dœZ	 e
 e ee	                     ¦   «         ¦  «        g ¦  «        ¦  «        Zd„ Zd„ Zg fd„ZdS )ÚOptionsc                   ó   — e Zd ZdS )úOptions.OptionErrorN©r‡  r—  r˜  r   r   r   ÚOptionErrorr=  é  ó   € € € € € Øˆr   r?  c                   ó   — e Zd ZdS )úOptions.UnknownOptionErrorNr>  r   r   r   ÚUnknownOptionErrorrB  ì  r@  r   rC  )ÚBASEÚJSTFr  rl  ra  ÚEBSCÚPCLTÚLTSH)ÚFeatÚGlatÚGlocÚSilfÚSill)ÚavarÚfvarÚgaspr8  Úhhear  ÚvheaúOS/2Úlocar¶   ÚcvtÚfpgmÚprepÚVDMXr  re  ÚMVARÚcvarÚSTAT)rU  rZ  rV  rW  rÚ  rX  )ÚrvrnÚccmpÚligaÚloclÚmarkÚmkmkÚrlig)ÚfracÚnumrÚdnom)ÚcaltÚcligÚcursrÇ  Úrclt)ÚvaltÚvertÚvkrnÚvpalÚvrt2ÚltraÚltrmÚrtlaÚrtlmÚrandÚjalt)ÚHarfÚHARFÚBuzzÚBUZZ)ÚchwsÚvchwÚhaltÚvhal)
ÚinitÚmediÚfinaÚisolÚmed2Úfin2Úfin3ÚcswhÚmsetÚstch)ÚljmoÚvjmoÚtjmo)ÚabvsÚblwsÚabvmÚblwm)ÚnuktÚakhnÚrphfÚrkrfr$  ÚblwfÚhalfÚabvfÚpstfÚcfarÚvatuÚcjctr}  ÚpresrŠ  r‹  ÚpstsÚhalnÚdistrŒ  r�  )ÚcommonÚ	fractionsÚ
horizontalÚverticalÚltrÚrtlrs  ÚjustifyÚprivateÚeast_asian_spacingÚarabicÚhangulÚtibetanÚindicc                 óÆ  — | j         d d …         | _        | j        d d …         | _        d| _        | j        d d …         | _        d| _        d| _        | j	        d d …         | _
        dg| _        d| _        d| _        d| _        d| _        d| _        d| _        g d¢| _        d| _        dg| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _         d | _!        d| _"        d| _#        tH          j%        | _&        d| _'        d| _(        d| _)        d| _*        d| _+        d| _,         | j-        di |¤Ž d S )NFTr   )r   r˜   r©   rª   rŒ  é   r*  i	  rÚ  r   ).Ú_drop_tables_defaultÚdrop_tablesÚ_no_subset_tables_defaultÚno_subset_tablesÚpassthrough_tablesÚ_hinting_tables_defaultÚhinting_tablesÚlegacy_kernÚlayout_closureÚ_layout_features_defaultr   rŸ  Úignore_missing_glyphsÚignore_missing_unicodesrÄ   r.  rû  rü  r0  r2  r(  r3  r  rú  rû  Úrecommended_glyphsÚrecalc_boundsÚrecalc_timestampÚprune_unicode_rangesÚprune_codepage_rangesÚrecalc_average_widthÚrecalc_max_contextÚcanonical_orderÚflavorÚwith_zopfliÚdesubroutinizer   ÚdefaultÚharfbuzz_repackerÚverboseÚtimingÚxmlÚfont_numberÚ
pretty_svgÚlazyr?   )r#   Úkwargss     r   r–  zOptions.__init__J  s•  € ØÔ4°Q°Q°QÔ7ˆÔØ $Ô >¸q¸q¸qÔ AˆÔØ"'ˆÔØ"Ô:¸1¸1¸1Ô=ˆÔØ ˆÔØ"ˆÔØ#Ô<¸Q¸Q¸QÔ?ˆÔØ"˜eˆÔØ%*ˆÔ"Ø'+ˆÔ$ØˆŒØ ˆÔØ ˆÔØ ˆÔð
ð 
ð 
ˆŒð !ˆÔØ%˜hˆÔØ$ˆÔØ ˆÔØ ˆÔØ#ˆÔØ"'ˆÔØ"ˆÔØ %ˆÔØ$(ˆÔ!Ø%)ˆÔ"Ø$)ˆÔ!Ø"'ˆÔØ#ˆÔØˆŒØ ˆÔØ#ˆÔÝ!6Ô!>ˆÔØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒ	àˆŒÐÐ�6ÐÐÐÐÐr   c                 ó¬   — |                      ¦   «         D ]>\  }}t          | |¦  «        s|                      d|z  ¦  «        ‚t          | ||¦  «         Œ?d S )NúUnknown option '%s')rT   rœ  rC  rö   )r#   rË  r¥  rR   s       r   r?   zOptions.set}  si   € Ø—L’L‘N”Nð 	 ð 	 ‰DˆAˆqÝ˜4 Ñ#Ô#ð IØ×-Ò-Ð.CÀaÑ.GÑHÔHÐHÝ�D˜!˜QÑÔÐÐð	 ð 	 r   c                 ó�  — g }g }|D �]º}|}|                      d¦  «        s|                     |¦  «         Œ0|dd …         }|                     d¦  «        }d}|dk    rQ|                      d¦  «        r|dd …         }	|	dk    rd }
nd}
n|}	d	}
|	                     d
¦  «        r|	d d…         }	d
}
n6|d |…         }	|	d         dv r|	d         dz   }|	d d…         }	||dz   d …         }
|	}|	                     dd¦  «        }	t          | |	¦  «        s7|d	u s||v r|                     |¦  «         �Œ%|                      d|z  ¦  «        ‚t          | |	¦  «        }|
d
k    rt          d|›d|›�¦  «         �Œjt          |t          ¦  «        rt          |
¦  «        }
�nt          |t          ¦  «        rt          |
¦  «        }
nôt          |t          ¦  «        rt          |
¦  «        }
nÏt          |t          ¦  «        rºt          |
t          ¦  «        r|                      d|z  ¦  «        ‚|
                     dd¦  «                             ¦   «         }|dgk    rg }d„ |D ¦   «         }|dk    r|}
nG|dk    r|}
|
                     |¦  «         n)|dk    r!|}
|D ]}||
v r|
                     |¦  «         ŒnJ ‚t%          | |	|
¦  «         �Œ¼||z   S )Nz--r©   ú=rÚ  zno-rª   zcanonical-orderFTú?z-+r˜   ú-Ú_rÍ  zCurrent setting for 'z' is: z5Option '%s' requires values to be specified using '='ú,ú r;  c                 ód   — g | ]-}t          |¦  «        r|d          dv rt          |d ¦  «        n|‘Œ.S )r   Ú
0123456789)r4   rÅ   rQ  s     r   r2   z&Options.parse_opts.<locals>.<listcomp>¾  s=   € ÐVÐVÐVÈa¥3 q¡6¤6ÐI¨a°¬d°lÐ.BÐ.B•c˜!˜Q‘i”i�iÈÐVÐVÐVr   z+=z-=)r‰  rK  Úfindrˆ  Úreplacerœ  rC  r³   Úprintr  rq   rÅ   Ústrr]   r?  r”  r  r£  rö   )r#   ÚargvÚignore_unknownÚposargsÚpassthru_optionsr  Úorig_ar/   Úopr¥  rR   ÚokÚovÚvvrR  s                  r   Ú
parse_optszOptions.parse_optsƒ  sG  € ØˆØÐØð F	 ñ F	 ˆAØˆFØ—<’< Ñ%Ô%ð Ø—’˜qÑ!Ô!Ð!ØØ�!�"�"”ˆAØ—’�s‘”ˆAØˆBØ�BŠwˆwØ—<’< Ñ&Ô&ð 
Ø˜!˜"˜"œ�AØÐ-Ò-Ð-ð !˜˜à!˜˜à�AØ�AØ—:’:˜c‘?”?ð Ø˜#˜2˜#œ�AØ�Aøà�b�q�b”E�Ø�R”5˜D�=�=Ø˜2œ ™�BØ˜#˜2˜#œ�AØ�a˜!‘e�g�g”J�ØˆBØ—	’	˜#˜sÑ#Ô#ˆAÝ˜4 Ñ#Ô#ð MØ! TÐ)Ð)¨R°>Ð-AÐ-AØ$×+Ò+¨FÑ3Ô3Ð3Ùà×1Ò1Ð2GÈ!Ñ2KÑLÔLÐLå˜˜qÑ!Ô!ˆBØ�CŠxˆxÝ�¸2¸2¸2¸r¸rÐBÑCÔCÐCÙÝ˜"�dÑ#Ô#ð !Ý˜‘G”G�‘Ý˜B¥Ñ$Ô$ð !Ý˜‘F”F��Ý˜B¥Ñ$Ô$ð !Ý˜‘F”F��Ý˜B¥Ñ%Ô%ð !Ý˜a¥Ñ&Ô&ð Ø×*Ò*ØOÐRSÑSñô ð ð —Y’Y˜s CÑ(Ô(×.Ò.Ñ0Ô0�Ø˜"˜’:�:Ø�BØVÐVÐSUÐVÑVÔV�Ø˜’9�9Ø�A�AØ˜4’Z�ZØ�AØ—H’H˜R‘L”L�L�LØ˜4’Z�ZØ�AØð (ð (˜Ø ˜6˜6ØŸHšH Q™KœK˜Køð(ð !�Lå�D˜!˜QÑÔÐÑàÐ)Ñ)Ð)r   N)r‡  r—  r˜  Ú	Exceptionr?  rC  r¬  r®  r±  Ú_layout_features_groupsr   r  Úiterr^   rµ  r–  r?   rä  r   r   r   r;  r;  è  sº  € € € € € ðð ð ð ð �iñ ô ð ðð ð ð ð ˜[ñ ô ð ð	ð 	ð 	Ðð ÐDÐDÐDÑDÐð!ð !ð !Ðð* NÐMÐMÐð
 KÐJÐJØ-Ð-Ð-Ø>Ð>Ð>Ø<Ð<Ð<Ø˜ÐØ˜ÐØ�Ø�8Ø3Ð3Ð3Ø>Ð>Ð>ð
ð 
ð 
ð +Ð*Ð*Ø3Ð3Ð3ð
ð 
ð 
ð72ð 2Ððf  *˜zØˆˆDˆDÐ(×/Ò/Ñ1Ô1Ñ2Ô2°BÑ7Ô7ñ ô  Ðð1ð 1ð 1ðf ð  ð  ð /1ð K*ð K*ð K*ð K*ð K*ð K*r   r;  c                   óž   — e Zd Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdd„Zg g g d	fd
„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ ZdS )Ú	Subsetterc                   ó   — e Zd ZdS )úSubsetter.SubsettingErrorNr>  r   r   r   ÚSubsettingErrorrë  Ò  r@  r   rì  c                   ó   — e Zd ZdS )ú&Subsetter.MissingGlyphsSubsettingErrorNr>  r   r   r   ÚMissingGlyphsSubsettingErrorrî  Õ  r@  r   rï  c                   ó   — e Zd ZdS )ú(Subsetter.MissingUnicodesSubsettingErrorNr>  r   r   r   ÚMissingUnicodesSubsettingErrorrñ  Ø  r@  r   rò  Nc                 ó¦   — |st          ¦   «         }|| _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d S r   )r;  rÇ   r?   rë  Úglyph_names_requestedÚglyph_ids_requested)r#   rÇ   s     r   r–  zSubsetter.__init__Û  sD   € Øð 	 Ý‘i”iˆGàˆŒÝ"%¡%¤%ˆÔÝ%(¡U¤UˆÔ"Ý#&¡5¤5ˆÔ Ð Ð r   r;  c                 ó®  — | j                              |¦  «         t          |t          ¦  «        r|                     d¦  «        }|                     d¦  «        }t          |¦  «        dz  }t          j        d|z  |¦  «        D ]}| j          	                    |¦  «         Œ| j
                             |¦  «         | j                             |¦  «         d S )NÚutf_8z	utf-32-berŒ  z>%dL)rë  rh   r  ÚbytesÚdecoder4  r4   rÊ  rË  r·  rô  rõ  )r#   r$   ÚgidsÚunicodesÚtextÚ
text_utf32Úncharsrí  s           r   ÚpopulatezSubsetter.populateä  sÊ   € ØÔ×&Ò& xÑ0Ô0Ð0Ý�d�EÑ"Ô"ð 	(Ø—;’;˜wÑ'Ô'ˆDØ—[’[ Ñ-Ô-ˆ
Ý�Z‘” AÑ%ˆÝ”˜v¨™°
Ñ;Ô;ð 	+ð 	+ˆAØÔ#×'Ò'¨Ñ*Ô*Ð*Ð*ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØÔ ×'Ò'¨Ñ-Ô-Ð-Ð-Ð-r   c                 óì  — |                       |¦  «        D �]\}|                     ¦   «         | j        j        v sB|                     ¦   «         | j        j        v r| j        j        r|dk    r/| j        j        s#d|v rt                               d|¦  «         ||= Œ„t          j
        |¦  «        }t          |d¦  «        r´t          d|z  ¦  «        5  ||         }d d d ¦  «         n# 1 swxY w Y   t          d|z  ¦  «        5  |                     || j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |s t                               d|¦  «         ||= �ŒAt                               d|¦  «         �Œ^d S )	NrÇ  r|  z
%s droppedr¡  z	load '%s'ú
prune '%s'ú%s pruned to empty; droppedú	%s pruned)Ú_sort_tablesÚstriprÇ   r­  r²  rÄ   r³  Úlogr    r   r€  rœ  Útimerr¡  ©r#   r%   r˜  Úclazzr³  Úretains         r   Ú_prune_pre_subsetzSubsetter._prune_pre_subsetï  s  € Ø×$Ò$ TÑ*Ô*ð 	/ñ 	/ˆCà—	’	‘”˜tœ|Ô7Ð7Ð7à—I’I‘K”K 4¤<Ô#>Ð>Ð>Ø œLÔ0ð ?ð ˜6’M�M¨4¬<Ô+C�MÈÐRVÈÈå—’˜ sÑ+Ô+Ð+Ø˜�IØåÔ'¨Ñ,Ô,ˆEå�uÐ0Ñ1Ô1ð 
/Ý˜;¨Ñ,Ñ-Ô-ð &ð &Ø  œI�Eð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å˜<¨#Ñ-Ñ.Ô.ð Hð HØ"×3Ò3°D¸$¼,ÑGÔG�FðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hàð /Ý—H’HÐ:¸CÑ@Ô@Ð@Ø˜S˜	Ùå—H’H˜[¨#Ñ.Ô.Ð.ùð3	/ð 	/s$   Ã	C%Ã%C)	Ã,C)	ÄD*Ä*D.	Ä1D.	c           	      óT  ‡ ‡‡‡‡— t          ‰                     ¦   «         ¦  «        }‰                     ¦   «         x‰ _        Št          ¦   «         ‰ _        ‰ j                             ‰ j        ¦  «         ‰ j                             ˆfd„‰ j        D ¦   «         ¦  «         t          ¦   «         ‰ _        ‰ j                             ‰ j                             |¦  «        ¦  «         ‰ j                             ˆfd„‰ j        D ¦   «         ¦  «         ‰ j        rFt           
                    d‰ j        ¦  «         ‰ j        j        s‰                      ‰ j        ¦  «        ‚‰ j                             ¦   «         ‰ _        t          ¦   «         ‰ _        d‰v r\t#          d¦  «        5  ‰d                              ‰ ¦  «         ‰ j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _        ‰ j        rNd„ ‰ j        D ¦   «         }t           
                    d|¦  «         ‰ j        j        s‰                      |¦  «        ‚~‰ j        j        r€d‰v rH‰ j                             ‰                     d	¦  «        ¦  «         t           
                    d
¦  «         n4‰ j                             d¦  «         t           
                    d¦  «         ‰ j        j        rŠd‰v r†t9          t;          dt=          ‰                     ¦   «         ¦  «        ¦  «        ¦  «        D ]/}‰ j                             ‰                     |¦  «        ¦  «         Œ0t           
                    d¦  «         d‰v røt#          d¦  «        5  t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _        ‰ j        j         rüd‰v røt#          d¦  «        5  t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _!        dD �]=}|‰v rýt#          d|z  ¦  «        5  t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰|                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   tE          ‰ d| #                    ¦   «         › d�t)          ‰ j        ¦  «        ¦  «         �Œ?d‰v røt#          d¦  «        5  t           
                    d t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    d!t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _$        d‰v røt#          d"¦  «        5  t           
                    d#t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    d$t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _$        d%‰v røt#          d&¦  «        5  t           
                    d't=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d%                              ‰ ¦  «         ‰ j                             |¦  «         t           
                    d(t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _%        t)          ‰ j        ¦  «        ‰ _&        ‰ '                    ¦   «         Šˆfd)„‰ j&        D ¦   «         ‰ _(        tS          ‰ j(         *                    ¦   «         ¦  «        ‰ _+        ‰                     ¦   «         ‰ j+                 ‰ _,        t)          ¦   «         ‰ _-        ‰ j        j.        rˆˆ fd*„|‰ j&        z
  D ¦   «         ‰ _-        ˆfd+„‰ j-        D ¦   «         ‰ _/        ‰ j        j.        sˆ fd,„‰D ¦   «         Šnˆˆ fd-„‰D ¦   «         Š‰‰ _0        ˆˆfd.„t9          t=          ‰¦  «        ¦  «        D ¦   «         ‰ _1        t           
                    d/t=          ‰ j&        ¦  «        ¦  «         ‰ `d S )0Nc              3   óN   •K  — | ]}|t          ‰¦  «        k     ¯‰|         V — Œ d S r   r3   ©r   r/   Úglyph_orders     €r   r   z,Subsetter._closure_glyphs.<locals>.<genexpr>  sB   øè è € ð %
ð %
Ø ÀÅCÈÑDTÔDTÒ@TÐ@TˆK˜ŒNÐ@TÐ@TÐ@TÐ@Tð%
ð %
r   c              3   óB   •K  — | ]}|t          ‰¦  «        k    ¯|V — Œd S r   r3   r  s     €r   r   z,Subsetter._closure_glyphs.<locals>.<genexpr>  s>   øè è € ð #
ð #
Ø°1½¸KÑ8HÔ8HÒ3HÐ3HˆAÐ3HÐ3HÐ3HÐ3Hð#
ð #
r   zMissing requested glyphs: %srã  zclose glyph list over 'cmap'c                 ó   — g | ]}d |z  ‘ŒS )zU+%04Xr   )r   rí  s     r   r2   z-Subsetter._closure_glyphs.<locals>.<listcomp>(  s   € ÐCÐCÐC¨�x !‘|ÐCÐCÐCr   z)Missing glyphs for requested Unicodes: %srÁ  r   zAdded gid0 to subsetz.notdefzAdded .notdef to subsetrŒ  z!Added first four glyphs to subsetr¨  zclose glyph list over 'MATH'z0Closing glyph list over 'MATH': %d glyphs before)r%   z.Closed glyph list over 'MATH': %d glyphs afterrv  zclose glyph list over 'GSUB'z0Closing glyph list over 'GSUB': %d glyphs beforez.Closed glyph list over 'GSUB': %d glyphs after)rE  rå  zclose glyph list over '%s'z.Closing glyph list over '%s': %d glyphs beforez,Closed glyph list over '%s': %d glyphs afterÚglyphs_Úedr‡  zclose glyph list over 'VARC'z0Closing glyph list over 'VARC': %d glyphs beforez.Closed glyph list over 'VARC': %d glyphs afterzclose glyph list over 'glyf'z0Closing glyph list over 'glyf': %d glyphs beforez.Closed glyph list over 'glyf': %d glyphs afterzCFF zclose glyph list over 'CFF 'z0Closing glyph list over 'CFF ': %d glyphs beforez.Closed glyph list over 'CFF ': %d glyphs afterc                 ó"   •— i | ]}|‰|         “ŒS r   r   ©r   r   Úorders     €r   r+   z-Subsetter._closure_glyphs.<locals>.<dictcomp>—  s   ø€ Ð#NÐ#NÐ#N°A A u¨Q¤xÐ#NÐ#NÐ#Nr   c                 ó6   •— h | ]}‰|         ‰j         k    ¯|’ŒS r   )r  )r   r   r  r#   s     €€r   rî  z,Subsetter._closure_glyphs.<locals>.<setcomp>ž  s5   ø€ ð #ð #ð #àØ˜”8˜tÔ7Ò7Ð7ð à7Ð7Ð7r   c                 ó"   •— i | ]}|‰|         “ŒS r   r   r  s     €r   r+   z-Subsetter._closure_glyphs.<locals>.<dictcomp>¤  s   ø€ Ð&PÐ&PÐ&P°q q¨%°¬(Ð&PÐ&PÐ&Pr   c                 ó&   •— g | ]}|‰j         v ¯|‘ŒS r   )Úglyphs_retainedrO   s     €r   r2   z-Subsetter._closure_glyphs.<locals>.<listcomp>§  s&   ø€ ÐSÐSÐS Q¸¸dÔ>RÐ9RÐ9R˜qÐ9RÐ9RÐ9Rr   c                 óP   •— g | ]"}‰                      |¦  «        ‰j        k    ¯ |‘Œ#S r   )Ú
getGlyphIDr  )r   r   r%   r#   s     €€r   r2   z-Subsetter._closure_glyphs.<locals>.<listcomp>©  s9   ø€ ð ð ð Ø¨$¯/ª/¸!Ñ*<Ô*<ÀÔ@XÒ*XÐ*X�Ð*XÐ*XÐ*Xr   c                 ó.   •— i | ]}‰‰|                  |“ŒS r   r   )r   r/   Únew_glyph_orderr  s     €€r   r+   z-Subsetter._closure_glyphs.<locals>.<dictcomp>±  s2   ø€ ð  
ð  
ð  
Ø-.ˆE�/ !Ô$Ô% qð 
ð  
ð  
r   zRetaining %d glyphs)2r?   ÚgetGlyphOrderÚorig_glyph_orderr  rh   rô  rõ  Úglyphs_missingÚ
differencer  r    rÇ   r¶  rï  r  r$   ró  r  rl   Úintersection_updater²  Úglyphs_cmapedr·  rò  rú  r·  ÚgetGlyphNamer¸  r¸  Úminr4   r¿  r´  r~  rö   ÚlowerÚglyphs_glyfedÚglyphs_cffedr  r"   r  r  r^   r  r  rÖ  r  r  r  Úglyph_index_map)	r#   r%   Ú
realGlyphsÚmissingr/   r³  r  r  r  s	   ``    @@@r   Ú_closure_glyphszSubsetter._closure_glyphs  sŸ  øøøøø€ Ý˜×+Ò+Ñ-Ô-Ñ.Ô.ˆ
Ø.2×.@Ò.@Ñ.BÔ.BÐBˆÔ å #¡¤ˆÔØÔ×$Ò$ TÔ%?Ñ@Ô@Ð@ØÔ×$Ò$ð %
ð %
ð %
ð %
Ø$(Ô$<ð%
ñ %
ô %
ñ 	
ô 	
ð 	
õ "™eœeˆÔØÔ×"Ò" 4Ô#8×#CÒ#CÀJÑ#OÔ#OÑPÔPÐPØÔ×"Ò"ð #
ð #
ð #
ð #
ØÔ/ð#
ñ #
ô #
ñ 	
ô 	
ð 	
ð Ôð 	MÝ�HŠHÐ3°TÔ5HÑIÔIÐIØ”<Ô5ð MØ×7Ò7¸Ô8KÑLÔLÐLàÔ+×0Ò0Ñ2Ô2ˆŒå #¡¤ˆÔØ�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð <ð <Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ ' t¤{Ñ3Ô3ˆÔØÔ ð 	ØCÐC¨TÔ-BÐCÑCÔCˆGÝ�HŠHÐ@À'ÑJÔJÐJØ”<Ô7ð CØ×9Ò9¸'ÑBÔBÐBØàŒ<Ô$ð 	4Ø˜ˆ~ˆ~Ø”—’ × 1Ò 1°!Ñ 4Ô 4Ñ5Ô5Ð5Ý—’Ð/Ñ0Ô0Ð0Ð0à”—’ 	Ñ*Ô*Ð*Ý—’Ð2Ñ3Ô3Ð3ØŒ<Ô*ð 	>Ø˜ˆ~ˆ~Ý�s 1¥c¨$×*<Ò*<Ñ*>Ô*>Ñ&?Ô&?Ñ@Ô@ÑAÔAð :ð :�AØ”K—O’O D×$5Ò$5°aÑ$8Ô$8Ñ9Ô9Ð9Ð9Ý—’Ð<Ñ=Ô=Ð=à�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔàŒ<Ô&ð 	3¨6°T¨>¨>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔà%ð 	Oñ 	OˆEØ˜ˆ}ˆ}ÝÐ7¸%Ñ?Ñ@Ô@ð 7ð 7Ý—H’HØHØÝ˜DœKÑ(Ô(ñô ð õ
 —J’J˜tœ{°�JÑ6Ô6Ð6Ø˜”K×.Ò.¨tÑ4Ô4Ð4Ø”K×3Ò3°JÑ?Ô?Ð?Ý—H’HØFØÝ˜DœKÑ(Ô(ñô ð õ
 —J’J˜tœ{°�JÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ �DÐ5 E§K¢K¡M¤MÐ5Ð5Ð5µyÀÄÑ7MÔ7MÑNÔNÐNÑNà�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔà�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔà�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ & d¤kÑ2Ô2ˆÔå(¨¬Ñ5Ô5ˆÔà×'Ò'Ñ)Ô)ˆØ#NÐ#NÐ#NÐ#N¸Ô9MÐ#NÑ#NÔ#NˆÔ å#& tÔ'?×'FÒ'FÑ'HÔ'HÑ#IÔ#IˆÔ Ø#'×#5Ò#5Ñ#7Ô#7¸Ô8PÔ#QˆÔ å'™kœkˆÔØŒ<Ô#ð 	ð#ð #ð #ð #ð #à# dÔ&:Ñ:ð#ñ #ô #ˆDÔð 'QÐ&PÐ&PÐ&P¸DÔ<OÐ&PÑ&PÔ&PˆÔ#àŒ|Ô'ð 	ØSÐSÐSÐS¨+ÐSÑSÔSˆOˆOðð ð ð ð Ø&ðñ ô ˆOð  /ˆÔð 
ð  
ð  
ð  
ð  
Ý27½¸OÑ8LÔ8LÑ2MÔ2Mð 
ñ  
ô  
ˆÔõ 	�ŠÐ&­¨DÔ,@Ñ(AÔ(AÑBÔBÐBàˆKˆKˆKs„   Æ 6G"Ç"G&Ç)G&ÎCQ.Ñ.Q2Ñ5Q2Ò1CVÖVÖV×CZ.Ú.Z2	Ú5Z2	ÜC_%ß%_)ß,_)àCc:ã:c>äc>ä1Chèhèhc                 ó>  — g | _         |                      |¦  «        D �]<}t          j        |¦  «        }|                     ¦   «         | j        j        v rt                               d|¦  «         ŒSt          |d¦  «        r’t          d|z  ¦  «        5  ||         }| j        | _        |                     | ¦  «        }| `d d d ¦  «         n# 1 swxY w Y   |st                               d|¦  «         ||= ŒÙt                               d|¦  «         Œõ| j        j        rt                               d|¦  «         �Œt                               d|¦  «         ||= �Œ>t          d¦  «        5  |                     | j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nz%s subsetting not neededrs   zsubset '%s'z%s subsetted to empty; droppedz%s subsettedz'%s NOT subset; don't know how to subsetz0%s NOT subset; don't know how to subset; droppedzsubset GlyphOrder)rü  r  r   r€  r  rÇ   r¯  r  r    rœ  r  r  r$   rs   r°  ÚwarningÚsetGlyphOrderr  r  s         r   Ú_subset_glyphszSubsetter._subset_glyphs¹  s  € Ø ˆÔØ×$Ò$ TÑ*Ô*ð 	ñ 	ˆCÝÔ'¨Ñ,Ô,ˆEà�yŠy‰{Œ{˜dœlÔ;Ð;Ð;Ý—’Ð3°SÑ9Ô9Ð9Ð9Ý˜ Ñ0Ô0ð Ý˜=¨3Ñ.Ñ/Ô/ð $ð $Ø  œI�EØ"&Ô"6�D”KØ"×0Ò0°Ñ6Ô6�FØ˜ð	$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð
 ð 2Ý—H’HÐ=¸sÑCÔCÐCØ˜S˜	˜	å—H’H˜^¨SÑ1Ô1Ð1Ð1Ø”Ô0ð Ý—’ÐBÀCÑHÔHÐHÑHå—’ÐNÐPSÑTÔTÐTØ˜�I‘IåÐ&Ñ'Ô'ð 	5ð 	5Ø×Ò˜tÔ3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s$   Â,C
Ã
C	ÃC	Å*FÆFÆFc                 óP  — |                      ¦   «         }d|v r*|                     d¦  «         |                     d¦  «         |D �]_}|dk    rŒ
|dk    �r | j        j        rf||                              ¦   «         }||                              |d¬¦  «        }||k    r)t                               d|t          |¦  «        ¦  «         | j        j
        rw||         j        dk    rf||                              ¦   «         }||                              |d¬¦  «        }||k    r)t                               d|t          |¦  «        ¦  «         | j        j        rJ||         j        }||                              |¦  «        }	||	k    rt                               d	||	¦  «         | j        j        rIt%          |¦  «        }
|
||         j        k    r)|
||         _        t                               d
||
¦  «         t)          j        |¦  «        }t-          |d¦  «        rŠt/          d|z  ¦  «        5  ||         }|                     || j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |s t                               d|¦  «         ||= �ŒDt                               d|¦  «         �Œad S )Nr¶   Ú
GlyphOrderrS  T)Ú	pruneOnlyz%s Unicode ranges pruned: %sr˜   z%s CodePage ranges pruned: %sz%s xAvgCharWidth updated: %dz%s usMaxContext updated: %drÈ   r  r  r  )rr  r£  rK  rÇ   r»  ÚgetUnicodeRangesÚrecalcUnicodeRangesr  r    r!   r¼  rJ  ÚgetCodePageRangesÚrecalcCodePageRangesr½  ÚxAvgCharWidthÚrecalcAvgCharWidthr¾  r   ÚusMaxContextr   r€  rœ  r  rÈ   )r#   r%   Ú	tableTagsr˜  Úold_unirangesÚnew_unirangesÚold_codepagesÚnew_codepagesÚold_avg_widthÚnew_avg_widthÚmax_contextr	  r³  r
  s                 r   Ú_prune_post_subsetzSubsetter._prune_post_subsetÔ  s  € Ø—I’I‘K”Kˆ	ð �YÐÐØ×Ò˜VÑ$Ô$Ð$Ø×Ò˜VÑ$Ô$Ð$Øð )	/ñ )	/ˆCØ�lÒ"Ð"ØØ�fŠ}‰}Ø”<Ô4ð Ø$(¨¤I×$>Ò$>Ñ$@Ô$@�MØ$(¨¤I×$AÒ$AÀ$ÐRVÐ$AÑ$WÔ$W�MØ$¨Ò5Ð5ÝŸšØ:¸CÅÈÑAVÔAVñô ð ð ”<Ô5ð 
¸$¸s¼)Ô:KÈqÒ:PÐ:Pð %)¨¤I×$?Ò$?Ñ$AÔ$A�MØ$(¨¤I×$BÒ$BÀ4ÐSWÐ$BÑ$XÔ$X�MØ$¨Ò5Ð5ÝŸšØ;ØÝ" =Ñ1Ô1ñô ð ð
 ”<Ô4ð UØ$(¨¤IÔ$;�MØ$(¨¤I×$@Ò$@ÀÑ$FÔ$F�MØ$¨Ò5Ð5ÝŸšÐ!?ÀÀmÑTÔTÐTØ”<Ô2ð RÝ",¨TÑ"2Ô"2�KØ" d¨3¤iÔ&<Ò<Ð<Ø1<˜˜Sœ	Ô.ÝŸšÐ!>ÀÀ[ÑQÔQÐQÝÔ'¨Ñ,Ô,ˆEÝ�uÐ1Ñ2Ô2ð /Ý˜<¨#Ñ-Ñ.Ô.ð Ið IØ  œI�EØ"×4Ò4°T¸4¼<ÑHÔH�FðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið ð /Ý—H’HÐ:¸CÑ@Ô@Ð@Ø˜S˜	™	å—H’H˜[¨#Ñ.Ô.Ð.ùðS)	/ð )	/s   È,$IÉI 	É#I 	c                 ó¢   ‡— g d¢Šd„ t          ‰¦  «        D ¦   «         Št          |                     ¦   «         ˆfd„¬¦  «        }d„ |D ¦   «         S )N)r«  r|  rv  rO  rN  r÷  r¶   rÁ  c                 ó    — i | ]\  }}||d z   “ŒS )r˜   r   )r   r/   rÍ  s      r   r+   z*Subsetter._sort_tables.<locals>.<dictcomp>	  s"   € Ð=Ð=Ð=¡  A�A�q˜1‘uÐ=Ð=Ð=r   c                 ó0   •— ‰                      | d¦  «        S rs  )rð  )r˜  ÚtagOrders    €r   r@  z(Subsetter._sort_tables.<locals>.<lambda>
  s   ø€ °8·<²<ÀÀQÑ3GÔ3G€ r   )ró  c                 ó   — g | ]
}|d k    ¯|‘ŒS )r3  r   rÌ  s     r   r2   z*Subsetter._sort_tables.<locals>.<listcomp>  s"   € Ð5Ð5Ð5�a 1¨Ò#4Ð#4�Ð#4Ð#4Ð#4r   )r9   r!   rr  )r#   r%   r—  rH  s      @r   r  zSubsetter._sort_tables  sa   ø€ ØSÐSÐSˆØ=Ð=­°8Ñ)<Ô)<Ð=Ñ=Ô=ˆÝ�d—i’i‘k”kÐ'GÐ'GÐ'GÐ'GÐHÑHÔHˆØ5Ð5˜4Ð5Ñ5Ô5Ð5r   c                 ó®   — |                       |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         d S r   )r  r-  r1  rD  )r#   r%   s     r   rD   zSubsetter.subset  sX   € Ø×Ò˜tÑ$Ô$Ð$Ø×Ò˜TÑ"Ô"Ð"Ø×Ò˜DÑ!Ô!Ð!Ø×Ò Ñ%Ô%Ð%Ð%Ð%r   r   )r‡  r—  r˜  rå  rì  rï  rò  r–  rÿ  r  r-  r1  rD  r  rD   r   r   r   ré  ré  Ñ  s$  € € € € € ðð ð ð ð ˜)ñ ô ð ðð ð ð ð  ñ ô ð ðð ð ð ð ¨ñ ô ð ð)ð )ð )ð )ð ! r°B¸Rð 	.ð 	.ð 	.ð 	.ð/ð /ð /ð8lð lð lð\5ð 5ð 5ð61/ð 1/ð 1/ðf6ð 6ð 6ð&ð &ð &ð &ð &r   ré  z	load fontc                 óì   — t          j        | ||j        |j        ||j        ¬¦  «        }|rHt          j        d¦  «        }|j        }|j        |_        |d         }|j        dk    rd|_        ||_        |S )N)ÚcheckChecksumsÚrecalcBBoxesÚrecalcTimestamprÊ  Ú
fontNumberr+  g       @r-  )	r   ÚTTFontr¹  rº  rÈ  r€  Údecode_format_2_0Údecode_format_3_0r/  )	ÚfontFilerÇ   rL  ÚdontLoadGlyphNamesrÊ  r%   r+  Úsavedr'  s	            r   Ú	load_fontrV    sŠ   € åŒ<ØØ%ØÔ*ØÔ0ØØÔ&ðñ ô €Dð$ ð 'ÝÔ" 6Ñ*Ô*ˆØÔ&ˆØ!%Ô!7ˆÔØ�ŒLˆØŒ<˜3ÒÐØˆAŒLØ!&ˆÔà€Kr   zcompile and save fontc                 ó¼   — |j         r|j        dk    rddlm} d|_        |j        | _        |j        | j        t          <   |                      ||j	        ¬¦  «         d S )NÚwoffr   )ÚsfntT)ÚreorderTables)
rÁ  rÀ  ÚfontTools.ttLibrY  Ú
USE_ZOPFLIrÄ  Úcfgr   Úsaver¿  )r%   ÚoutfilerÇ   rY  s       r   Ú	save_fontr`  4  sj   € àÔð ˜wœ~°Ò7Ð7Ø(Ð(Ð(Ð(Ð(Ð(àˆŒØ”.€D„KØ&-Ô&?€D„HÕ"Ñ#Ø‡I‚Iˆg WÔ%<€IÑ=Ô=Ð=Ð=Ð=r   c           
      óÂ  — dd l }|                     dd| ¦  «        } |                     dd| ¦  «        } g }|                      ¦   «         D ]•}|                     d¦  «        }t          |¦  «        dk    r$|                     t          |d¦  «        ¦  «         ŒN|\  }}|                     t          t          |d¦  «        t          |d¦  «        dz   ¦  «        ¦  «         Œ–|S )Nr   z0[xX]rÔ  z[<+>,;&#\\xXuU\n	]rÑ  r˜   r,  )Úrerz   r”  r4   rK  rÅ   r  r¸  )rk   rb  r1   ÚitemÚfieldsÚstartÚends          r   Úparse_unicodesrg  ?  sÑ   € Ø€I€I€Ià
�Šˆx˜˜aÑ Ô €AØ
�ŠÐ$ c¨1Ñ-Ô-€AØ
€AØ—’‘	”	ð >ð >ˆØ—’˜C‘”ˆÝˆv‰;Œ;˜!ÒÐØ�HŠH•S˜˜r‘]”]Ñ#Ô#Ð#Ð#à‰JˆE�3Ø�HŠH•U�3˜u b™>œ>­3¨s°B©<¬<¸!Ñ+;Ñ<Ô<Ñ=Ô=Ð=Ð=Ø€Hr   c           
      óš  — g }|                       dd¦  «                             ¦   «         D ]Ÿ}|                     d¦  «        }t          |¦  «        dk    r)|                     t	          |d         ¦  «        ¦  «         ŒS|                     t          t	          |d         ¦  «        t	          |d         ¦  «        dz   ¦  «        ¦  «         Œ |S )NrÓ  rÔ  rÑ  r˜   r   )rØ  r”  r4   rK  rÅ   r  r¸  )rk   r1   rc  rd  s       r   Ú
parse_gidsri  O  s®   € Ø
€AØ—	’	˜#˜sÑ#Ô#×)Ò)Ñ+Ô+ð @ð @ˆØ—’˜C‘”ˆÝˆv‰;Œ;˜!ÒÐØ�HŠH•S˜ œ‘^”^Ñ$Ô$Ð$Ð$à�HŠH•U�3˜v aœy™>œ>­3¨v°a¬y©>¬>¸AÑ+=Ñ>Ô>Ñ?Ô?Ð?Ð?Ø€Hr   c                 óR   — |                       dd¦  «                             ¦   «         S )NrÓ  rÔ  )rØ  r”  )rk   s    r   Úparse_glyphsrk  Z  s"   € Ø�9Š9�S˜#ÑÔ×$Ò$Ñ&Ô&Ð&r   c                  ó~   — t          dt          t          j        ¬¦  «         t          dt          j        ¬¦  «         d S )Nzusage:©Úfilez,Try pyftsubset --help for more information.
)rÙ  Ú	__usage__ÚsysÚstderrr   r   r   Úusagerr  ^  s5   € Ý	ˆ(•I¥C¤JÐ/Ñ/Ô/Ð/Ý	Ð
9ÅÄ
ÐKÑKÔKÐKÐKÐKr   z%make one with everything (TOTAL TIME)c           
      ó"  — ddl m} ddlm} | €t          j        dd…         } d| v rt          t          ¦  «         dS t          ¦   «         }	 | 	                    | g d¢¬¦  «        } nB# |j
        $ r5}t          ¦   «          t          d	|t          j        ¬
¦  «         Y d}~dS d}~ww xY wt          | ¦  «        dk     rt          ¦   «          dS  ||j        rt          j        nt          j        ¬¦  «         |j        r*t&          j                             t          j        ¦  «         ndt&          j        _        | d         }| dd…         } t1          |¬¦  «        }d}g }g }	g }
d}d}d}| D �]†}|dk    rd}Œ|                     d¦  «        r|dd…         }Œ,|                     d¦  «        r||dd…         z  }ŒO|                     d¦  «        r]t5          |dd…         d¬¦  «        5 }||                     ¦   «                              dd¦  «        z  }ddd¦  «         n# 1 swxY w Y   ŒÁ|                     d¦  «        r=|dd…         dk    rd}n*|
                     t=          |dd…         ¦  «        ¦  «         �Œ|                     d¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|
                     t=          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œ¬|                     d ¦  «        r,|	                     tC          |dd…         ¦  «        ¦  «         �Œí|                     d!¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|	                     tC          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œ†|                     d"¦  «        r=|d#d…         dk    rd}n*|                     tE          |d#d…         ¦  «        ¦  «         �ŒØ|                     d$¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|                     tE          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œq| #                    |¦  «         �Œˆ|j$         o| }|j%        }tM          ||||¬%¦  «        }|€8|j'        �d&|j'         (                    ¦   «         z   nd}tS          ||dd'¬(¦  «        }t'          d)¦  «        5  |r'|                     | *                    ¦   «         ¦  «         |r‡|d*         j+        D ]y}| ,                    ¦   «         rc|
                     |j-         .                    ¦   «         ¦  «         |j/        dk    r,|
                     |j0         .                    ¦   «         ¦  «         Œzd|vsJ ‚	 ddd¦  «         n# 1 swxY w Y   tb           2                    d+|z  ¦  «         tb           2                    d,|
¦  «         tb           2                    d-|¦  «         tb           2                    d.|	¦  «         | 3                    ||	|
|¬/¦  «         | 4                    |¦  «         tk          |||¦  «         |j        rrddl6}tb           2                    d0|j7         8                    |¦  «        |fz  ¦  «         tb           2                    d1|j7         8                    |¦  «        |fz  ¦  «         |j9        r| :                    t          j;        ¦  «         | <                    ¦   «          dS )2z%OpenType font subsetter and optimizerr   )Úsplitext)ÚconfigLoggerNr˜   z--help)	rú  z	gids-filer$   zglyphs-filerü  z	text-filerû  zunicodes-filezoutput-file)rÜ  zERROR:rm  r©   )ÚlevelT)rÇ   Fr;  r   z--output-file=rè  z--text=é   z--text-file=r  zutf-8)Úencodingú
z--unicodes=é   z--unicodes-file=r,  ú#z--gids=z--gids-file=z	--glyphs=é	   z--glyphs-file=)rT  rÊ  r‹  z.subset)Ú	extensionÚ	overWriteÚsuffixzcompile glyph listrã  z
Text: '%s'zUnicodes: %sz
Glyphs: %szGids: %s)r$   rú  rû  rü  zInput font:% 7d bytes: %szSubset font:% 7d bytes: %s)=Úos.pathrt  Ú	fontToolsru  rp  rÛ  rÙ  Ú__doc__r;  rä  r?  rr  rq  r4   rÅ  ÚloggingÚINFOÚWARNINGrÆ  r  r'   ÚsetLevelÚDEBUGÚdisabledré  r‰  ÚopenÚreadrØ  r  rg  Ú	readlinesr”  ri  rk  rK  r.  rÊ  rV  rÀ  r'  r   r  rð  rç  rã  rr  rñ  rò  r  r    rÿ  rD   r`  ÚosÚpathÚgetsizerÇ  ÚsaveXMLÚstdoutÚclose)Úargsrt  ru  rÇ   ÚeÚfontfileÚ	subsetterr_  r$   rú  rû  Úwildcard_glyphsÚwildcard_unicodesrü  r   r'  ÚlinerT  rÊ  r%   ÚextrÍ  rŒ  s                          r   Úmainrš  c  sø  € ð !Ð Ð Ð Ð Ð Ø&Ð&Ð&Ð&Ð&Ð&à€|ÝŒx˜˜˜Œ|ˆà�4ÐÐÝ�g‰ŒˆØˆqå‰iŒi€GðØ×!Ò!Øð
ð 
ð 
ð "ñ 
ô 
ˆˆøð Ôð ð ð Ý‰ŒˆÝˆh˜¥¤
Ð+Ñ+Ô+Ð+Øˆqˆqˆqˆqˆqøøøøðøøøõ
 ˆ4�y„y�1‚}€}Ý‰ŒˆØˆqà€L w¤ÐK•w”|�|½G¼OÐLÑLÔLÐLØ„~ð %ÝŒ×Ò�gœmÑ,Ô,Ð,Ð,à $�ŒÔà�AŒw€HØ���Œ8€Då 'Ð*Ñ*Ô*€IØ€GØ€FØ€DØ€HØ€OØÐØ€DØð ,ñ ,ˆØ�Š8ˆ8Ø"ˆOØØ�<Š<Ð(Ñ)Ô)ð 	Ø˜˜˜”fˆGØØ�<Š<˜	Ñ"Ô"ð 	Ø�A�a�b�b”E‰MˆDØØ�<Š<˜Ñ'Ô'ð 	Ý�a˜˜˜”f wÐ/Ñ/Ô/ð 3°1Ø˜Ÿš™œ×(Ò(¨¨rÑ2Ô2Ñ2�ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3àØ�<Š<˜Ñ&Ô&ð 	Ø���Œv˜Š}ˆ}Ø$(Ð!Ð!à—’¥¨q°°°¬vÑ 6Ô 6Ñ7Ô7Ð7ÙØ�<Š<Ð*Ñ+Ô+ð 	Ý�a˜˜˜”f‘”ð H ØŸKšK™MœMð Hð H�DØ—O’O¥N°4·:²:¸c±?´?À1Ô3EÑ$FÔ$FÑGÔGÐGÐGðHðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hñ Ø�<Š<˜	Ñ"Ô"ð 	Ø�KŠK�
 1 Q R R¤5Ñ)Ô)Ñ*Ô*Ð*ÙØ�<Š<˜Ñ'Ô'ð 	Ý�a˜˜˜”f‘”ð @ ØŸKšK™MœMð @ð @�DØ—K’K¥
¨4¯:ª:°c©?¬?¸1Ô+=Ñ >Ô >Ñ?Ô?Ð?Ð?ð@ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ñ Ø�<Š<˜Ñ$Ô$ð 	Ø���Œu˜Š|ˆ|Ø"&��à—’�l¨1¨Q¨R¨R¬5Ñ1Ô1Ñ2Ô2Ð2ÙØ�<Š<Ð(Ñ)Ô)ð 	Ý�a˜˜˜”f‘”ð D ØŸKšK™MœMð Dð D�DØ—M’M¥,¨t¯zªz¸#©¬¸qÔ/AÑ"BÔ"BÑCÔCÐCÐCðDðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dñ Ø�Š�aÑÔÐÑà$Ô0Ð0Ð?¸°ZÐØŒ<€DÝØ�'Ð.@Àtðñ ô €Dð €Ø.5¬nÐ.Hˆc�G”N×(Ò(Ñ*Ô*Ñ*Ð*ÈdˆÝ$Ø ¨t¸Ið
ñ 
ô 
ˆõ 
Ð#Ñ	$Ô	$ð 	 ð 	 Øð 	0Ø�MŠM˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øð 	:Ø˜&”\Ô(ð :ð :�Ø—;’;‘=”=ð :Ø—O’O A¤F§K¢K¡M¤MÑ2Ô2Ð2Ø”x 2’~�~Ø Ÿš¨¬	¯ªÑ(8Ô(8Ñ9Ô9Ð9øØ˜ÐÐÐÐÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ ‡H‚Hˆ\˜DÑ Ñ!Ô!Ð!Ý‡H‚Hˆ^˜XÑ&Ô&Ð&Ý‡H‚Hˆ\˜6Ñ"Ô"Ð"Ý‡H‚HˆZ˜ÑÔÐà×Ò˜f¨4¸(ÈÐÑNÔNÐNØ×Ò�TÑÔÐåˆd�G˜WÑ%Ô%Ð%à„ð UØˆ	ˆ	ˆ	å�ŠÐ,°´·²ÀÑ0IÔ0IÈ8Ð/TÑTÑUÔUÐUÝ�ŠÐ-°´·²ÀÑ1IÔ1IÈ7Ð0SÑSÑTÔTÐTà„{ð !Ø�Š•S”ZÑ Ô Ð à‡J‚J�L„L€L€L€Lsv   ÁA& Á&
B%Á0*B Â B%Ç%,HÈH!	È$H!	Ê'ALÌL	ÌL	ÎAO!Ï!O%	Ï(O%	Ñ,ASÓS	ÓS	ÕB9X$Ø$X(Ø+X()r;  ré  rV  r`  ri  rk  rg  rš  r   )FT)F)T)r   FT)€r�  r   ÚfontTools.misc.roundToolsr   r   ÚfontTools.ttLib.tablesr   ÚfontTools.ttLib.tables.otBaser   ÚfontTools.otlLib.maxContextCalcr   ÚfontTools.pens.basePenr	   ÚfontTools.misc.loggingToolsr
   ÚfontTools.misc.cliToolsr   ÚfontTools.subset.utilr   r   ÚfontTools.subset.cffÚfontTools.subset.svgÚfontTools.varLibr   r   ÚfontTools.ttLib.tables._n_a_m_er   rp  rÊ  Úarrayrƒ  Úcollectionsr   r   Ú	functoolsr   Útypesr   ro  r‚  Ú	getLoggerr  r&   r$   r  r,   r6   rž   r;   r@   rD   rJ   rc  rY   ÚSingleSubstrl   rs   ÚMultipleSubstÚAlternateSubstÚLigatureSubstÚReverseChainSingleSubstÚDevicer­   ÚValueRecordr·   Ú	SinglePosrÈ   ÚPairPosÚ
CursivePosÚAnchorÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosr+  r-  ÚContextSubstÚChainContextSubstÚ
ContextPosÚChainContextPosr1  rŸ  ÚExtensionSubstÚExtensionPosrµ  r´  r  r  r%  rz  r/  r6  rx  rP  rO  rL  rY  ry  r€  r�  r…  r‰  r›  r�  r¡  r¦  rÄ  r  rD  ÚMathGlyphConstructionrª  r·  r¸  r¹  rÀ  rÞ  r>  rÑ  r›  r;  ré  rV  r`  rg  ri  rk  rr  rš  Ú__all__r   r   r   ú<module>rÂ     s9  ðð
 Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø =Ð =Ð =Ð =Ð =Ð =Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àA€	ðð ñðUñcð ðP €gÔÐ*Ñ+Ô+€ðQð Qð Qð Qð ˆZ˜ SÑ)Ô)€„
ð 	ˆÐ&�WÔ&Ð'?Ñ@Ô@ÐAÑAÔA€ð%ð %ð %ð0ð 0ð 0ð
 €ˆXÔÑÔðAð Añ  ÔðAð
 €ˆXÔÑÔð6ð 6ñ  Ôð6ð
 €ˆXÔÑÔðð ñ  Ôðð €ˆXÔÑÔð9ð 9ñ  Ôð9ð
 €ˆXÔÑÔðð ñ  Ôðð €ˆXÔÑÔðSð Sñ  ÔðSð €ˆXÔÑÔðð ð ñ  Ôðð& €ˆXÔÑÔðPð Pñ  ÔðPð
 €ˆXÔ!Ñ"Ô"ðKð Kñ #Ô"ðKð €ˆXÔ!Ñ"Ô"ðð ñ #Ô"ðð €ˆXÔ#Ñ$Ô$ð#ð #ñ %Ô$ð#ð €ˆXÔ#Ñ$Ô$ðð ñ %Ô$ðð €ˆXÔ$Ñ%Ô%ðYð Yñ &Ô%ðYð €ˆXÔ$Ñ%Ô%ð!ð !ñ &Ô%ð!ð €ˆXÔ#Ñ$Ô$ðð ñ %Ô$ðð €ˆXÔ#Ñ$Ô$ð ð  ñ %Ô$ð ð €ˆXÔ-Ñ.Ô.ð
5ð 
5ñ /Ô.ð
5ð €ˆXÔ-Ñ.Ô.ð5ð 5ñ /Ô.ð5ð( €ˆXŒ_ÑÔð)ð )ñ Ôð)ð €ˆXÔ!Ñ"Ô"ð ð  ñ #Ô"ð ð €ˆXÔÑ Ô ð5ð 5ñ !Ô ð5ð €ˆXÔÑ Ô ðð ñ !Ô ðð> €ˆXÔÑÔð*5ð *5ñ Ôð*5ðZ €ˆXÔÑÔð7ð 7ñ Ôð7ð( €ˆXÔ Ñ!Ô!ð	5ð 	5ñ "Ô!ð	5ð €ˆXŒ_ÑÔð	ð 	ñ Ôð	ð €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ!Ñ"Ô"ð5ð 5ñ #Ô"ð5ð4 €ˆXÔ!Ñ"Ô"ð	ð 	ñ #Ô"ð	ð €ˆXÔ Ñ!Ô!ð5ð 5ñ "Ô!ð5ð> €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ!Ñ"Ô"ð5ð 5ñ #Ô"ð5ð4 €ˆXÔ!Ñ"Ô"ð	ð 	ñ #Ô"ð	ð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔØÔØÔñô ð	ð 	ñô ð	ð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔØÔØÔñô ðð ñô ðð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔñ
ô 
ðð ñ
ô 
ðð €ØÔ˜(Ô1°8Ô3Sñô ðð ñô ðð €ØÔØÔØÔØÔñ	ô ðð ñô ðð €ØÔØÔØÔØÔñ	ô ðW?ð W?ñô ðW?ðt €ˆXÔ" HÔ$>Ñ?Ô?ðl5ð l5ñ @Ô?ðl5ð^ €ØÔØÔØÔØÔñ	ô ðW5ð W5ñô ðW5ðt €ØÔØÔØÔØÔñ	ô ð&5ð &5ñô ð&5ðR €ØÔØÔØÔØÔñ	ô ð5ð 5ñô ð5ð& €ˆXÔ$Ñ%Ô%ð5ð 5ñ &Ô%ð5ð €ˆXÔ$Ñ%Ô%ð5ð 5ñ &Ô%ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXŒ_ÑÔð)ð )ð )ñ Ôð)ð( €ˆXŒ_ÑÔð	$ð 	$ñ Ôð	$ð €ˆXŒ_ÑÔðð ñ Ôðð €ˆXŒ_ÑÔð)ð )ñ Ôð)ð
 €ˆXŒ_ÑÔðIð Iñ ÔðIð €ˆXŒ_ÑÔðEð Eñ ÔðEð €ˆXÔ Ñ!Ô!ðNð Nñ "Ô!ðNð
 €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ Ñ!Ô!ð)ð )ñ "Ô!ð)ð €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ Ñ!Ô!ð"ð "ñ "Ô!ð"ð* €ˆXÔÑÔðð ñ Ôðð €ˆXÔ!Ñ"Ô"ð
ð 
ñ #Ô"ð
ð €ˆXÔ!Ñ"Ô"ðð ñ #Ô"ðð €ˆXÔ!Ñ"Ô"ð#ð #ñ #Ô"ð#ð €ˆXÔ.Ñ/Ô/ðð ñ 0Ô/ðð €ˆXÔ'Ñ(Ô(ðð ñ )Ô(ðð €ˆXÔ'Ñ(Ô(ð	ð 	ñ )Ô(ð	ð €ˆXÔ.Ñ/Ô/ð	(ð 	(ñ 0Ô/ð	(ð €ˆXÔ'Ñ(Ô(ð,ð ,ñ )Ô(ð,ð" €ˆXÔ$ hÔ&6Ñ7Ô7ðDð Dñ 8Ô7ðDð €ˆXÔ$ hÔ&6Ñ7Ô7ð'ð 'ñ 8Ô7ð'ð €ˆXŒ_ÑÔð:ð :ð :ñ Ôð:ð €ˆXŒ_ÑÔð0ð 0ñ Ôð0ð €ˆXÔ Ñ!Ô!ð	"ð 	"ñ "Ô!ð	"ð €ˆXÔ Ñ!Ô!ðYð Yñ "Ô!ðYð
 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð: €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFðð ñ GÔFðð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð9ð 9ñ GÔFð9ð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð, €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð=ð =ñ GÔFð=ð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð,ð ,ð ,ñ GÔFð,ð. €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð$ €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð8ð 8ñ GÔFð8ð4 €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð  €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFðð ñ GÔFðð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð2ð 2ñ GÔFð2ð> €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð+ð +ñ GÔFð+ð\ €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ððD=ð =ð =ð4 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ððD €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð	!ð 	!ñ *Ô)ð	!ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð*ð *ñ *Ô)ð*ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð& €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð@ð @ñ *Ô)ð@ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ðð ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ðJ €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð'ð 'ñ *Ô)ð'ðT €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð@ð @ñ *Ô)ð@ð( €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð
 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð?ð ?ñ *Ô)ð?ð,ð ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð: €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð0ð 0ñ *Ô)ð0ðf €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð9(ð 9(ñ *Ô)ð9(ðx €ˆXÔ+Ñ,Ô,ðð ñ -Ô,ðð €ˆXÔ"Ñ#Ô#ðð ñ $Ô#ðð" €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðAð Añ *Ô)ðAð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ð6 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð)ð )ñ *Ô)ð)ðX €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð2ð 2ñ *Ô)ð2ð
 €ˆXÔ/Ñ0Ô0ð-ð -ñ 1Ô0ð-ð €ˆXÔ-Ñ.Ô.ð/ð /ñ /Ô.ð/ð €ˆXÔ"Ñ#Ô#ð$ð $ñ $Ô#ð$ð €ˆXÔ#Ñ$Ô$ð	ð 	ñ %Ô$ð	ð €ˆXÔ"Ñ#Ô#ðð ñ $Ô#ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð!ˆUÔ! &Ñ)Ô)Ô/Ñ0Ô0ðð ñ 1Ô0ðð: €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð  €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð& €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð9ð 9ñ *Ô)ð9ð0 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
ð 
ñ *Ô)ð
ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð?ð ?ñ *Ô)ð?ðD €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
ð 
ñ *Ô)ð
ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð> €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð$f*ð f*ð f*ð f*ð f*ˆfñ f*ô f*ð f*ðR@&ð @&ð @&ð @&ð @&�ñ @&ô @&ð @&ðF
 €€{ÑÔðð ð ñ Ôðð> €ÐÑÔð>ð >ñ  Ôð>ðð ð ð ð ð ð'ð 'ð 'ðLð Lð Lð
 €Ð.Ñ/Ô/ðNð Nð Nñ 0Ô/ðNðb	ð 	ð 	€€€r   