§
    ¢”jŸ/ ã                  ó|&  — 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 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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._0         e e#j-        d¦  «        ¬¦  «        Z1d„ Z2d„ Z3 eej4        ¦  «        d„ ¦   «         Z5 eej4        ¦  «        d„ ¦   «         Z6 eej4        ¦  «        d„ ¦   «         Z7 eej4        ¦  «        d „ ¦   «         Z8 eej9        ¦  «        d!„ ¦   «         Z5 eej9        ¦  «        d"„ ¦   «         Z: eej9        ¦  «        dçd%„¦   «         Z7 eej9        ¦  «        d&„ ¦   «         Z8 eej;        ¦  «        d'„ ¦   «         Z< eej;        ¦  «        d(„ ¦   «         Z= eej>        ¦  «        d)„ ¦   «         Z< eej>        ¦  «        d*„ ¦   «         Z= eej?        ¦  «        d+„ ¦   «         Z< eej?        ¦  «        d,„ ¦   «         Z= eej@        ¦  «        d-„ ¦   «         Z< eej@        ¦  «        d.„ ¦   «         Z= eejA        ¦  «        d/„ ¦   «         Z< eejA        ¦  «        d0„ ¦   «         Z= eejB        ¦  «        d1„ ¦   «         ZC eejD        ¦  «        d2„ ¦   «         ZE eejF        ¦  «        d3„ ¦   «         Z= eejF        ¦  «        d4„ ¦   «         ZG eejH        ¦  «        d5„ ¦   «         Z= eejH        ¦  «        d6„ ¦   «         ZG eejI        ¦  «        d7„ ¦   «         Z= eejJ        ¦  «        d8„ ¦   «         ZE eejI        ¦  «        d9„ ¦   «         ZG eejK        ¦  «        d:„ ¦   «         Z= eejK        ¦  «        d;„ ¦   «         ZG eejL        ¦  «        d<„ ¦   «         Z= eejL        ¦  «        d=„ ¦   «         ZG eejM        ¦  «        d>„ ¦   «         Z= eejM        ¦  «        d?„ ¦   «         ZG eej;        ej>        ej?        ej@        ejA        ejF        ejH        ejI        ejK        ejL        ejM        ¦  «        d@„ ¦   «         ZN eej;        ej>        ej?        ej@        ejA        ejF        ejH        ejI        ejK        ejL        ejM        ¦  «        dA„ ¦   «         ZO eej;        ej>        ej?        ej@        ejA        ejP        ejQ        ejR        ejS        ¦	  «	        dB„ ¦   «         ZG eej;        ej?        ejA        ¦  «        dC„ ¦   «         ZT eej>        ej@        ejP        ejQ        ¦  «        dD„ ¦   «         ZT eejP        ejQ        ejR        ejS        ¦  «        dE„ ¦   «         ZU eejP        ejQ        ¦  «        dF„ ¦   «         Z< eejP        ejR        ejQ        ejS        ¦  «        dG„ ¦   «         Z= eejP        ejQ        ejR        ejS        ¦  «        dH„ ¦   «         ZN eejP        ejQ        ejR        ejS        ¦  «        dI„ ¦   «         ZO eejV        ¦  «        dJ„ ¦   «         Z< eejV        ¦  «        dK„ ¦   «         ZT eejV        ejW        ¦  «        dL„ ¦   «         Z= eejV        ejW        ¦  «        dM„ ¦   «         ZG eejV        ejW        ¦  «        dN„ ¦   «         ZN eejV        ejW        ¦  «        dO„ ¦   «         ZO eejX        ¦  «        dædP„¦   «         Z< eejX        ¦  «        dQ„ ¦   «         Z= eejX        ¦  «        dR„ ¦   «         ZG eejX        ¦  «        dS„ ¦   «         ZN eejX        ¦  «        dT„ ¦   «         ZO eejX        ¦  «        dU„ ¦   «         ZT eejY        ¦  «        dV„ ¦   «         Z= eejY        ¦  «        dW„ ¦   «         ZG eejY        ¦  «        dX„ ¦   «         ZN eejY        ¦  «        dY„ ¦   «         ZZ eejY        ¦  «        dZ„ ¦   «         Z[ eej\        ¦  «        d[„ ¦   «         ZN eej]        ¦  «        d\„ ¦   «         ZN eej]        ¦  «        d]„ ¦   «         ZO eej]        ¦  «        d^„ ¦   «         Z^ eej_        ¦  «        d_„ ¦   «         ZN eej`        ¦  «        d`„ ¦   «         ZN eej`        ¦  «        da„ ¦   «         ZO eej_        ¦  «        db„ ¦   «         Z^ eej_        ¦  «        dc„ ¦   «         Za eej`        ¦  «        dd„ ¦   «         Z^ eej`        ¦  «        de„ ¦   «         Za eejb        ejc        ¦  «        df„ ¦   «         Z^ eejb        ejc        ¦  «        dg„ ¦   «         Za eejb        ejc        ¦  «        dh„ ¦   «         Zd eeje        ¦  «        dèdi„¦   «         Z^ eeje        ¦  «        dèdj„¦   «         Za eeje        ¦  «        dk„ ¦   «         Zd eejf        ¦  «        dl„ ¦   «         Z^ eejf        ¦  «        dm„ ¦   «         Za eejf        ¦  «        dn„ ¦   «         Zd e ejg        do¦  «        ¦  «        dp„ ¦   «         Z= e ejg        dq¦  «        ¦  «        dr„ ¦   «         Z= e ejg        ds¦  «        ¦  «        dt„ ¦   «         Z= e ejg        du¦  «        ¦  «        dv„ ¦   «         Z< e ejg        du¦  «         ejg        dw¦  «        ¦  «        dx„ ¦   «         Z= e ejg        du¦  «         ejg        dw¦  «        ¦  «        dy„ ¦   «         Zh e ejg        du¦  «         ejg        dw¦  «        ¦  «        dz„ ¦   «         ZN e ejg        du¦  «         ejg        dw¦  «        ¦  «        d{„ ¦   «         ZZ e ejg        du¦  «         ejg        dw¦  «        ¦  «        déd|„¦   «         Zi e ejg        du¦  «         ejg        dw¦  «        ¦  «        d}„ ¦   «         Zj e ejg        du¦  «         ejg        dw¦  «        ¦  «        d~„ ¦   «         Zk e ejg        du¦  «         ejg        dw¦  «        ¦  «        d„ ¦   «         Za e ejg        du¦  «         ejg        dw¦  «        ¦  «        d€„ ¦   «         Zl e ejg        du¦  «         ejg        dw¦  «        ¦  «        d�„ ¦   «         Zm e ejg        du¦  «         ejg        dw¦  «        ¦  «        d‚„ ¦   «         Zn e ejg        du¦  «         ejg        dw¦  «        ¦  «        dƒ„ ¦   «         ZG e ejg        d„¦  «        ¦  «        d…„ ¦   «         Z=d†„ Zo e ejg        d„¦  «        ¦  «        d‡„ ¦   «         ZG e ejg        dˆ¦  «        ¦  «        d‰„ ¦   «         Zm e ejg        dˆ¦  «        ¦  «        dŠ„ ¦   «         Z= e ejg        d‹¦  «        ¦  «        dŒ„ ¦   «         Z= e ejg        d�¦  «        ¦  «        dŽ„ ¦   «         Z= e ejg        d�¦  «        ¦  «        d�„ ¦   «         Z= e ejg        d‘¦  «        ¦  «        d’„ ¦   «         Z= e ejg        d“¦  «        ¦  «        d”„ ¦   «         Z< e ejg        d“¦  «        ¦  «        d•„ ¦   «         Z= e ejg        d–¦  «        ¦  «        d—„ ¦   «         Z= e ejg        d˜¦  «        ¦  «        d™„ ¦   «         Zm e ejg        d˜¦  «        ¦  «        dš„ ¦   «         Z=d›„ Zp e ejg        dœ¦  «        ¦  «        d�„ ¦   «         Z= e ejg        dž¦  «        ¦  «        dŸ„ ¦   «         Z= e ejg        d ¦  «        ¦  «        d¡„ ¦   «         Z= e ejg        d¢¦  «        ¦  «        d£„ ¦   «         Z= e ejg        d¤¦  «        ¦  «        d¥„ ¦   «         Zm e ejg        d¤¦  «        ¦  «        d¦„ ¦   «         Z= e ejg        d§¦  «        ¦  «        d¨„ ¦   «         Z=d©„ Zq e ejg        dª¦  «        ¦  «        d«„ ¦   «         Z< e ejg        dª¦  «        ¦  «        d¬„ ¦   «         Z= e ejg        d­¦  «        ¦  «        d®„ ¦   «         ZG eejr        ¦  «        d¯„ ¦   «         Z< eejs        ¦  «        d°„ ¦   «         Z< e ejg        d±¦  «        ¦  «        d²„ ¦   «         Z= e ejg        d±¦  «        ¦  «        d³„ ¦   «         Z< e ejg        d±¦  «        ¦  «        d´„ ¦   «         ZG e ejg        dµ¦  «        ¦  «        d¶„ ¦   «         Z< eejt        ¦  «        d·„ ¦   «         Z= eeju        ¦  «        d¸„ ¦   «         Z= eejv        ¦  «        d¹„ ¦   «         Z= eejw        ¦  «        dº„ ¦   «         Z= eejs        ¦  «        d»„ ¦   «         Z= e ejg        dµ¦  «        ¦  «        d¼„ ¦   «         Z= e ejx        d½¦  «        jy        ¦  «        d¾„ ¦   «         Zz e ejg        d½¦  «        ¦  «        d¿„ ¦   «         Z< e ejg        d½¦  «        ¦  «        dÀ„ ¦   «         Zm e ejg        d½¦  «        ¦  «        dÁ„ ¦   «         Z= e ejg        d½¦  «        ¦  «        dÂ„ ¦   «         ZG e ejg        dÃ¦  «        ¦  «        dÄ„ ¦   «         Z< e ejg        dÃ¦  «        ¦  «        dÅ„ ¦   «         Zm e ejg        dÃ¦  «        ¦  «        dÆ„ ¦   «         Z= e ejg        dÇ¦  «        ¦  «        dÈ„ ¦   «         Zm e ejg        dÉ¦  «        ¦  «        dÊ„ ¦   «         Zmh dË£Z{ e ejg        dÌ¦  «        ¦  «        dÍ„ ¦   «         ZGdêdÔ„Z| e ejg        dÕ¦  «        ¦  «        dÖ„ ¦   «         ZG G d×„ dØe}¦  «        Z~ G dÙ„ dÚe}¦  «        Z e1dÛ¦  «        dëdÜ„¦   «         Z€ e1dÝ¦  «        dÞ„ ¦   «         Z�dß„ Z‚dà„ Zƒdá„ Z„dâ„ Z… e1dã¦  «        dædä„¦   «         Z†g då¢Z‡dS )ìé    )Úannotations)Úconfig)ÚotRound)ÚttLib)ÚotTables)ÚUSE_HARFBUZZ_REPACKER)Ú
maxCtxFont)ÚNullPen)ÚTimer)ÚmakeOutputFileName)Ú_add_methodÚ
_uniq_sort)Ú*)ÚvarStoreÚmultiVarStore)ÚNameRecordVisitorÚmakeName)ÚmirroredN)ÚCounterÚdefaultdict)Úreduce)Ú
MethodTypez9fonttools subset font-file [glyph...] [--option=value]...a$  fonttools subset -- OpenType font subsetter and optimizer

fonttools subset 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::

    $ fonttools subset --glyph-names?
    Current setting for 'glyph-names' is: False
    $ fonttools subset --name-IDs=?
    Current setting for 'name-IDs' is: [0, 1, 2, 3, 4, 5, 6]
    $ fonttools subset --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:
  '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::

  $ fonttools subset 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     €úh/var/www/finuniver-perm.ru/html/portfolio/venv/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)r4   Úindicesr3   s   ` @r    Ú_list_subsetr9   Þ  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   r2   r   r'   s      €r    r5   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_glyphsrC   é  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   rA   s     €r    r5   zsubset.<locals>.<listcomp>ó  s   ø€ Ð9Ð9Ð9˜¨Q°&¨[¨[�1¨[¨[¨[r"   ©r>   r'   )r&   r'   r8   s    ` r    ÚsubsetrG   ï  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   r2   r&   s     €r    r5   zremap.<locals>.<listcomp>ú  s   ø€ Ð8Ð8Ð8 a�4”;˜q”>Ð8Ð8Ð8r"   NrJ   )r&   Úcoverage_maps   ` r    ÚremaprM   ÷  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    r5   zintersect.<locals>.<listcomp>  s"   ø€ Ð
?Ð
?Ð
?‘��A°1¸°;°;ˆ1°;°;°;r"   )r   ÚanyrQ   Ú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   rP   rR   s     €r    r!   z"intersect_class.<locals>.<genexpr>
  s/   øè è € Ð@Ð@˜¨°´Ð(?Ð(?�1Ð(?Ð(?Ð(?Ð(?Ð@Ð@r"   c              3  ó6   •K  — | ]\  }}|‰k    ¯|‰v ¯|V — Œd S r   r   )r   r   rU   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"   )rB   rQ   rW   )r&   r'   r[   s   ```r    Úintersect_classr\     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   rT   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   rP   rR   s     €r    r!   zsubset.<locals>.<genexpr>  s*   øè è € Ð&OÐ&OÀ1 q°´Ð'>Ð&OÐ&OÐ&OÐ&OÐ&OÐ&Or"   r   )rQ   rW   r   rV   ÚlistÚvaluesrM   )r&   r'   rM   Ú	useClass0r8   s   ``   r    rG   rG     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   rU   Ú	class_maps      €r    r.   zremap.<locals>.<dictcomp>%  s+   ø€ ÐOÐOÐO±°°1�a˜Ÿš¨Ñ+Ô+ÐOÐOÐOr"   N)rQ   rW   )r&   rg   s    `r    rM   rM   "  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   rU   Ú
cur_glyphss      €r    r!   z!closure_glyphs.<locals>.<genexpr>*  s+   øè è € ÐJÐJ™$˜!˜Q¸!¸z¸/¸/�A¸/¸/¸/¸/ÐJÐJr"   )r'   ÚupdateÚmappingrW   ©r&   Úsrj   s     `r    Úclosure_glyphsro   (  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   rJ   ©r   r   rU   rn   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>/  s7   ø€ ð ð ð Ù��A°°a´h°°À1ÈÌÀ=À=ˆˆ1À=À=À=r"   ©rl   rW   Úbool©r&   rn   s    `r    Úsubset_glyphsrv   -  sM   ø€ ðð ð ð Øœ×+Ò+Ñ-Ô-ðñ ô €D„Lõ �”ÑÔÐr"   c                ó€   — | j                              ¦   «         D ]#\  }}||v r|j                             |¦  «         Œ$d S r   )rl   rW   r'   rk   )r&   rn   rj   ÚglyphÚsubsts        r    ro   ro   5  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   rJ   )r   Úsubrn   s     €r    r!   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>A  s)   øè è € Ð >Ð >°S ¨¬ Ð >Ð >Ð >Ð >Ð >Ð >r"   )r'   Úallrr   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>>  sS   ø€ ð ð ð áˆAˆqØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸AÐ >Ñ >Ô >Ñ>Ô>ˆ=ð 	
ˆ1àˆ=ˆ=r"   rs   ru   s    `r    rv   rv   <  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   Úvlistrj   s      €r    r!   z!closure_glyphs.<locals>.<genexpr>H  s+   øè è € ÐWÐW¡  5ÀqÈJÀÀ�eÀÀÀÀÐWÐWr"   )r'   rk   Ú
alternatesrW   rm   s     `r    ro   ro   F  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   rJ   ©r   rU   rn   s     €r    r!   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>P  s)   øè è € Ð >Ð >°1  a¤h Ð >Ð >Ð >Ð >Ð >Ð >r"   c                ó&   •— g | ]}|‰j         v ¯|‘ŒS r   rJ   r†   s     €r    r5   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>N  s    ø€ Ð.Ð.Ð.�!  Q¤X  ˆA   r"   )r'   rV   )r   r   r�   rn   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>M  sh   ø€ ð ð ð áˆAˆuØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸Ð >Ñ >Ô >Ñ>Ô>ˆ=ð 	
Ð.Ð.Ð.Ð.�uÐ.Ñ.Ô.àˆ=ˆ=r"   )r‚   rW   rt   ru   s    `r    rv   rv   K  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   rJ   ©r   Úcrn   s     €r    r!   z6closure_glyphs.<locals>.<genexpr>.<listcomp>.<genexpr>Y  s)   øè è € Ð0VÐ0VÀ1°°a´h°Ð0VÐ0VÐ0VÐ0VÐ0VÐ0Vr"   )r~   Ú	ComponentÚLigGlyph©r   Úseqrn   s     €r    r5   z,closure_glyphs.<locals>.<genexpr>.<listcomp>Y  s?   ø€ ÐWÐWÐW˜c­SÐ0VÐ0VÐ0VÐ0VÈÌÐ0VÑ0VÔ0VÑ-VÔ-VÐWˆSŒ\ÐWÐWÐWr"   Nr   )r   r   Úseqsrj   rn   s      €€r    r!   z!closure_glyphs.<locals>.<genexpr>X  sN   øè è € ð 

ð 

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

ð 

r"   )r'   rk   Ú	ligaturesrW   rm   s    ``r    ro   ro   U  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   rJ   rr   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>b  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   rJ   rŒ   s     €r    r!   z6subset_glyphs.<locals>.<dictcomp>.<listcomp>.<genexpr>g  s)   øè è € Ð/UÐ/UÀ!°°Q´X°Ð/UÐ/UÐ/UÐ/UÐ/UÐ/Ur"   )r�   r'   r~   rŽ   r�   s     €r    r5   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>d  sV   ø€ ð 
ð 
ð 
àØŒ|˜qœxÐ'Ð'­CÐ/UÐ/UÐ/UÐ/UÀsÄ}Ð/UÑ/UÔ/UÑ,UÔ,UÐ'ð à'Ð'Ð'r"   r   )r   r   r’   rn   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>c  sU   ø€ ð ð ð ñ ˆAˆtð 	
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ðð ð r"   c                ó   — i | ]
\  }}|¯||“ŒS r   r   )r   r   rU   s      r    r.   z!subset_glyphs.<locals>.<dictcomp>k  s#   € ÐCÐCÐC™t˜q !ÀÐC�a˜ÐCÐCÐCr"   )r“   rW   rt   ru   s    `r    rv   rv   `  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   rF   rŒ   s     €r    r!   z!closure_glyphs.<locals>.<genexpr>s  sE   øè è € ð "
ð "
àð �KŠK˜œÑ!Ô!ð"
ð "
ð "
ð "
ð "
ð "
r"   c              3  ó2   •K  — | ]}‰j         |         V — Œd S r   )Ú
SubstituterK   s     €r    r!   z!closure_glyphs.<locals>.<genexpr>x  s*   øè è € Ð<Ð<¨q˜œ¨Ô*Ð<Ð<Ð<Ð<Ð<Ð<r"   r   úunknown format: %s)ÚFormatÚCoverager>   r~   ÚLookAheadCoverageÚBacktrackCoverager'   rk   )r&   rn   rj   r8   s   ``  r    ro   ro   o  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   rJ   )r   r2   r}   rn   s      €r    r5   z!subset_glyphs.<locals>.<listcomp>ƒ  s$   ø€ ÐQÐQÐQ™˜˜CÀÈÌÀÀ�1ÀÀÀr"   c              3  óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r   ©rG   r'   rŒ   s     €r    r!   z subset_glyphs.<locals>.<genexpr>‰  sE   øè è € ð ð àð —’˜œÑ"Ô"ðð ð ð ð ð r"   r   rŸ   )r    r¡   rG   r'   r9   rž   r<   rM   r7   Ú
GlyphCountrt   r~   r¢   r£   ©r&   rn   r8   s    ` r    rv   rv   }  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&   ÚnamerU   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   r2   r3   ra   s     €€r    r5   z!subset_glyphs.<locals>.<listcomp>§  s"   ø€ Ð>Ð>Ð> A°A¸²I°I�f˜Q”i°I°I°Ir"   r   rŸ   )r    r7   r¡   rG   r'   ÚValueÚ
ValueCountrt   )r&   rn   r8   r3   ra   s      @@r    rv   rv   Ÿ  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   rU   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    r5   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   rU   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(   ÚoptionsrU   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   r2   r3   Úpairss     €€r    r5   z!subset_glyphs.<locals>.<listcomp>Ô  s"   ø€ Ð?Ð?Ð? Q°Q¸²Y°Y˜˜aœ°Y°Y°Yr"   c                ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚSecondGlyphr'   )r   Úrrn   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>Ö  s.   ø€ ð !ð !ð !Ø°´ÀÄÐ0IÐ0I�Ð0IÐ0IÐ0Ir"   c                ó&   — g | ]\  }}|j         ¯|‘ŒS r   )ÚPairValueCount)r   r2   Úps      r    r5   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    r5   z!subset_glyphs.<locals>.<listcomp>á  s5   ø€ ð 
ð 
ð 
àð �4Ô#Ò#Ð#ð	 ð $Ð#Ð#r"   T©rM   c                ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )ÚClass2Countr×   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>è  s1   ø€ ð 
ð 
ð 
àØ�4Ô#Ò#Ð#ð à#Ð#Ð#r"   F)rM   rb   c                ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass1RecordrK   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>í  s!   ø€ ÐFÐFÐF°a˜TÔ.¨qÔ1ÐFÐFÐFr"   c                ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass2Record©r   r2   r�   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>ï  s    ø€ ÐDÐDÐD°A˜aœn¨QÔ/ÐDÐDÐDr"   r   rŸ   )r    r¡   rG   r'   ÚPairSetr7   ÚPairValueRecordrÓ   r<   rM   r9   ÚPairSetCountrt   Ú	ClassDef1ÚintersectionÚ	ClassDef2rÜ   rÞ   rÖ   rÚ   )	r&   rn   r8   rÔ   Ú
class1_mapÚ
class2_mapr�   r3   rÎ   s	   ``    @@@r    rv   rv   Î  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Ã   ÚValue2rt   )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   r2   r3   Úrecordss     €€r    r5   z!subset_glyphs.<locals>.<listcomp>  s"   ø€ ÐIÐIÐI¨q¸qÀ5ºy¸y ¨¤
¸y¸y¸yr"   r   rŸ   )r    r¡   rG   r'   ÚEntryExitRecordr7   ÚEntryExitCountrt   )r&   rn   r8   r3   ró   s      @@r    rv   rv     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         dk    �rÏ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Št          ‰¦  «        Š	ˆˆˆ	fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        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>>  ó$   è è € Ð"NÐ"N¨q 1¤7Ð"NÐ"NÐ"NÐ"NÐ"NÐ"Nr"   c                óZ   •‡— g | ]&Š‰‰k     ¯t          ˆˆfd „‰D ¦   «         ¦  «        ¯$‰‘Œ'S )c              3  óB   •K  — | ]}‰‰         j         |         d uV — Œd S r   )Ú
BaseAnchor)r   ÚjÚbase_recordsr2   s     €€r    r!   z+subset_glyphs.<locals>.<listcomp>.<genexpr>G  s4   øè è € ÐUÐUÀ!�L ”OÔ.¨qÔ1¸Ð=ÐUÐUÐUÐUÐUÐUr"   ©rV   )r   r2   r  Úclass_indicesÚnum_base_recordss    @€€€r    r5   z!subset_glyphs.<locals>.<listcomp>C  sX   øø€ ð 
ð 
ð 
àØÐ#Ò#Ð#ÝÐUÐUÐUÐUÐUÀ}ÐUÑUÔUÑUÔUð $ð à#Ð#Ð#r"   Fr   rŸ   )r    ÚMarkCoveragerG   r'   r9   Ú	MarkArrayÚ
MarkRecordr7   Ú	MarkCountr   ÚBaseCoverager>   Ú	BaseArrayÚ
BaseRecordrM   Ú	BaseCountÚ
ClassCountrf   r  r  rt   )
r&   rn   Úmark_indicesÚintersect_base_indicesÚbase_indicesÚmÚbr  r
  r  s
          @@@r    rv   rv   6  sì  øøø€ à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ Ý"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆà!%Ô!2×!<Ò!<¸Q¼XÑ!FÔ!FÐØ”~Ô0ˆÝ˜|Ñ,Ô,Ðð
ð 
ð 
ð 
ð 
ð 
à+ð
ñ 
ô 
ˆð ð 	Ø�5àÔ×Ò Ñ-Ô-Ð-Ý$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ å˜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Ë   ^  s†   € àŒ?ð $Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØ”Ô*ð 	$ð 	$ˆAØ”\ð $ð $�Øð $Ø—M’M‘O”O�Oøð$ð ˆ4r"   c                óö  ‡‡	‡
— | j         dk    �rÙ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Š	| j        j        Š
ˆˆ	ˆ
fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        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>s  r  r"   c                ól   •— g | ]0}|‰k     ¯t          ˆfd „‰|         j        D ¦   «         ¦  «        ¯.|‘Œ1S )c              3  óP   •‡K  — | ]Št          ˆfd „‰D ¦   «         ¦  «        V — Œ dS )c              3  ó6   •K  — | ]}‰j         |         d uV — Œd S r   )ÚLigatureAnchor)r   r  Ú	components     €r    r!   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>~  s0   øè è € ÐSÐSÀ�IÔ,¨QÔ/°tÐ;ÐSÐSÐSÐSÐSÐSr"   Nr	  )r   r#  r
  s    @€r    r!   z+subset_glyphs.<locals>.<listcomp>.<genexpr>}  sU   øøè è € ð ð àõ ÐSÐSÐSÐSÀ]ÐSÑSÔSÑSÔSðð ð ð ð ð r"   )rV   ÚComponentRecord)r   r2   r
  Úligature_arrayÚnum_ligaturess     €€€r    r5   z!subset_glyphs.<locals>.<listcomp>y  sn   ø€ ð 
ð 
ð 
àØ�=Ò Ð Ýð ð ð ð à!/°Ô!2Ô!Bðñ ô ñ ô ð !ð à Ð Ð r"   Fr   rŸ   )r    r  rG   r'   r9   r  r  r7   r  r   ÚLigatureCoverager>   ÚLigatureArrayÚLigatureAttachÚLigatureCountrM   r  rf   r  r$  r"  rt   )r&   rn   r  Úintersect_ligature_indicesÚligature_indicesr  r4   r�   r
  r%  r&  s           @@@r    rv   rv   k  s  øøø€ à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ Ý"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆà%)Ô%:×%DÒ%DÀQÄXÑ%NÔ%NÐ"ØÔ+Ô:ˆØÔ*Ô8ˆð
ð 
ð 
ð 
ð 
ð 
à/ð
ñ 
ô 
Ðð  ð 	Ø�5àÔ×#Ò#Ð$4Ñ5Ô5Ð5Ý,8ØÔÔ-Ð/?ñ-
ô -
ˆÔÔ)õ ,/¨tÔ/AÔ/PÑ+QÔ+QˆÔÔ(å˜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  r4   r�   r  s          r    rË   rË   �  s§   € àŒ?ð 
(Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØÔ#Ô2ð 	(ð 	(ˆAØˆyØØÔ&ð (ð (�ØÔ)ð (ð (�AØð (ØŸš™œ˜øð(ð(ð ˆ4r"   c                óâ  ‡‡‡	— | j         dk    �rÏ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Št          ‰¦  «        Š	ˆˆˆ	fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        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"   c                óZ   •‡— g | ]&Š‰‰k     ¯t          ˆˆfd „‰D ¦   «         ¦  «        ¯$‰‘Œ'S )c              3  óB   •K  — | ]}‰‰         j         |         d uV — Œd S r   )ÚMark2Anchor)r   r  r2   Úmark2_recordss     €€r    r!   z+subset_glyphs.<locals>.<listcomp>.<genexpr>¾  s5   øè è € ÐWÐWÀA�M !Ô$Ô0°Ô3¸4Ð?ÐWÐWÐWÐWÐWÐWr"   r	  )r   r2   r
  r3  Únum_mark2_recordss    @€€€r    r5   z!subset_glyphs.<locals>.<listcomp>º  sX   øø€ ð 
ð 
ð 
àØÐ$Ò$Ð$ÝÐWÐWÐWÐWÐWÈÐWÑWÔWÑWÔWð %ð à$Ð$Ð$r"   Fr   rŸ   )r    ÚMark1CoveragerG   r'   r9   Ú
Mark1Arrayr  r7   r  r   ÚMark2Coverager>   Ú
Mark2ArrayÚMark2RecordrM   r  rf   r  r2  rt   )
r&   rn   Úmark1_indicesÚintersect_mark2_indicesÚmark2_indicesr  r  r
  r3  r4  s
          @@@r    rv   rv   ­  sì  øøø€ à„{�aÒÑØÔ*×1Ò1°!´(Ñ;Ô;ˆÝ%1ØŒOÔ&¨ñ&
ô &
ˆŒÔ"õ %(¨¬Ô(BÑ$CÔ$CˆŒÔ!Ý"Ð"OÐ"O°D´OÔ4NÐ"OÑ"OÔ"OÑOÔOˆà"&Ô"4×">Ò">¸q¼xÑ"HÔ"HÐØœÔ3ˆÝ Ñ.Ô.Ðð
ð 
ð 
ð 
ð 
ð 
à,ð
ñ 
ô 
ˆð ð 	Ø�5àÔ× Ò  Ñ/Ô/Ð/Ý&2ØŒOÔ'¨ñ'
ô '
ˆŒÔ#õ %(¨¬Ô(CÑ$DÔ$DˆŒÔ!å˜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Ç   r6  r  r  rº   r8  r9  r2  )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_lookupsrA  â  s	   € ð 	€Dr"   c                ó   — g S r   r   r¯   s    r    Úcollect_lookupsrC  ó  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_1to1rG    s	   € ð ˆ5r"   c                ó   — dS rû   r   r¯   s    r    rG  rG    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>G  ó   €  Q¤Z€ r"   c                ó   — | j         S r   rT  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>H  ó   € ¨!¬*€ r"   c                ó   — dS )Nr   r   rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>I  s   € ¨€ r"   c                ó   — dS )N)NNNr   rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>J  s   € Ð-?€ r"   c                ó   — | j         fS r   )ÚInputrU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>M  ó
   €  a¤g Z€ r"   c                ó*   — | j         | j        | j        fS r   ©Ú	Backtrackr]  Ú	LookAheadrU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>N  ó   € ¨1¬;¸¼ÀÄÐ*M€ r"   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó:   K  — | ]}t          |¦  «        d z   V — ŒdS ©r›   Nr6   ©r   Úxs     r    r!   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>R  ó,   è è € Ð&=Ð&=°a¥s¨1¡v¤v°¡zÐ&=Ð&=Ð&=Ð&=Ð&=Ð&=r"   )r]  r¨   ©rÑ   r-   s     r    ÚSetRuleDatazN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataP  ó&   € Ø!"‘J�Q”WØ&=Ð&=¸1Ð&=Ñ&=Ô&=‘O�Q”\�\�\r"   c                óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S ©Nr   r›   r¬   ©ra  r]  rb  r7   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountrj  s     r    ÚChainSetRuleDatazS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataT  ó\   € Ø:;Ñ7�Q”[ !¤'¨1¬;õ
 ˜Q˜qœT™œ¥C¨¨!¬¡I¤I°¡Mµ3°q¸´t±9´9ð	ØÔ-ØÔ)ØÔ-Ð-Ð-r"   r¬   c                ó   — | j         S r   rT  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>]  rW  r"   c                ó   — | j         S r   rT  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>^  rY  r"   c                ó   — | j         fS r   ©ÚClassDefrU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>_  s
   € ¨¬¨€ r"   c                ó*   — | j         | j        | j        fS r   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefrU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>`  s   € ØÔ'Ø”OØÔ'ð.€ r"   c                ó   — |\  | _         d S r   rx  rj  s     r    ÚSetContextDatazQ__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetContextDataf  s   € Ø$%‘M�Q”Z�Z�Zr"   c                ó0   — |\  | _         | _        | _        d S r   r{  rj  s     r    ÚSetChainContextDatazV__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetChainContextDatai  s   € ØRSÑO�QÔ(¨!¬/¸1Ô;NÐ;NÐ;Nr"   c                ó   — | j         fS r   r  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>l  r^  r"   c                ó*   — | j         | j        | j        fS r   r`  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>m  rc  r"   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó:   K  — | ]}t          |¦  «        d z   V — ŒdS rf  r6   rg  s     r    r!   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>q  ri  r"   )r  r¨   rj  s     r    rk  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDatao  rl  r"   c                óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S rn  ro  rj  s     r    rs  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDatas  rt  r"   c                ó   — | j         d         S ©Nr   rT  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>|  s   €  Q¤Z°¤]€ r"   c                ó   — | j         d         S r‰  )ÚInputCoveragerU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>}  s   € ¨!¬/¸!Ô*<€ r"   c                ó   — | j         S r   rT  rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>‚  rW  r"   c                ó0   — | j         | j        z   | j        z   S r   )r£   r‹  r¢   rU  s    r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>ƒ  s   € ØÔ'¨!¬/Ñ9¸AÔ<OÑOð r"   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   r6   rg  s     r    r!   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>‰  s(   è è € Ð&9Ð&9°!¥s¨1¡v¤vÐ&9Ð&9Ð&9Ð&9Ð&9Ð&9r"   )r¡   r¨   rj  s     r    rk  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData‡  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   r6   rg  s     r    r!   zf__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>‘  s(   è è € Ð+Ð+ A�˜Q™œÐ+Ð+Ð+Ð+Ð+Ð+r"   )r£   r‹  r¢   rp  rq  rr  rj  s     r    rs  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    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>¨  s   € ¸QÀ&¸[¸[°q°c°cÈb€ r"   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                óx   — |r|                      | |¦  «        n"|dk    rt          | ¦  «        nt          ¦   «         S r‰  )r\   rB   r—  s      r    rV  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>®  s=   € àð<�A×%Ò% f¨aÑ0Ô0Ð0à)*¨aª¨�#˜f™+œ+˜+µS±U´Uð r"   r}  ry  r]  r  r‹  r¡   )Ú__name__ÚendswithÚ
startswithÚTypÚTyperP  ÚChainTypÚInputIdxÚDataLenrR  r¡   ÚContextDatar€  ÚRuleDatark  r’  r“  r”  r•  Ú	Intersectry  ÚClassDefIndexr]  )r&   r[   r    r   r¡  rP  r£  r¤  r¢  r¡   ÚChainCoverager¥  ÚChainContextDatar€  r‚  r¦  ÚChainRuleDatark  rs  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    ÚContextHelperrK  +  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�   Úcdrn   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�   rn   s     @€€r    r!   z!closure_glyphs.<locals>.<genexpr>×  ó_   øøè è € ð ð á!˜˜Eõ ÐDÐDÐDÐDÐDÐD¸eÐDÑDÔDÑDÔDðð ð ð ð ð r"   r   r¬   )rj   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   rF   ©r   rh  rn   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>   rC   r    r¥  r¶   r”  r•  r’  r~   Úzipr¦  rB   rR  ÚSequenceIndexÚ	frozensetr'   r]  ÚtableÚ
LookupListÚLookupÚLookupListIndexÚaddrG  rk   Úranger7   ro   ry  r\   )r&   rn   rj   r8   r¥  ÚrssÚrssCountr2   rÑ   ÚchaosÚllÚseqiÚ
pos_glyphsÚlookupry  Úinput_coveragesr�   s    `              @r    ro   ro   Ä  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   r2   rÏ  rÐ  s     €€r    r5   z!subset_glyphs.<locals>.<listcomp>A  ó"   ø€ Ð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   rJ   ©r   r   rn   s     €r    r!   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>J  s)   øè è € Ð9Ð9¨a˜A ¤˜MÐ9Ð9Ð9Ð9Ð9Ð9r"   Nr¾  )r   Úglistrn   s     €r    r!   z+subset_glyphs.<locals>.<listcomp>.<genexpr>J  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�   rn   s     €€r    r5   z!subset_glyphs.<locals>.<listcomp>F  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   r2   Úrsr�   s      €r    r5   z!subset_glyphs.<locals>.<listcomp>O  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    r5   z!subset_glyphs.<locals>.<listcomp>Y  sB   ø€ ð 
ð 
ð 
Ø>?¨aÐ9ˆA�HŠH�Q”X TˆHÑ*Ô*Ð*°Tð
ð 
ð 
r"   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   rÙ  s     €€r    r5   z!subset_glyphs.<locals>.<listcomp>a  rÚ  r"   c                ó&   •— g | ]\  }}|‰v r|nd ‘ŒS r   r   )r   r2   rÏ  r8   s      €r    r5   z!subset_glyphs.<locals>.<listcomp>e  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>p  s'   øè è € Ð6Ð6¨1˜˜Y˜Ð6Ð6Ð6Ð6Ð6Ð6r"   Nr¾  ©r   rÀ  rê  s     @r    r!   z+subset_glyphs.<locals>.<listcomp>.<genexpr>o  sX   øè è € ð ð á(˜	 5õ Ð6Ð6Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6ðð ð ð ð ð r"   )r~   rÆ  r¦  )r   rÑ   r�   Ú
klass_mapss     €€r    r5   z!subset_glyphs.<locals>.<listcomp>k  ss   ø€ ð ð ð àØðõ ð ð å,/°
¸A¿JºJÀq¹M¼MÑ,JÔ,Jðñ ô ñ ô ð	Øðð ð r"   c                ó2   ‡— g | ]\  Š}ˆfd „|D ¦   «         ‘ŒS )c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   re   ré  s     €r    r5   z,subset_glyphs.<locals>.<listcomp>.<listcomp>|  s%   ø€ Ð;Ð;Ð;°˜Ÿš¨Ñ+Ô+Ð;Ð;Ð;r"   r   rë  s     @r    r5   z!subset_glyphs.<locals>.<listcomp>{  sA   ø€ ð ð ð á,˜I uð <Ð;Ð;Ð;°UÐ;Ñ;Ô;ðð ð r"   c                óF   •— g | ]}|rt          |‰j        ¦  «        r|nd ‘ŒS r   rá  )r   râ  r�   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>‚  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¡   rG   r'   r¶   r”  r•  r’  rù   r“  r7   r<   rM   r9   rt   r¥  r¨  ry  r>   rk  rÆ  r¦  r~   )r&   rn   râ  Ússr¥  rÑ   r�   r8   rì  rÏ  rÐ  s    `    @@@@@r    rv   rv   4  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    r5   z"subset_lookups.<locals>.<listcomp>§  s;   ø€ ð ð ð àØðð #%Ô"4¸Ð"FÐ"Fð à"FÐ"FÐ"Fr"   r­   c                ó*   •— g | ]}|r|j         ‰v ¯|‘ŒS r   rõ  rö  s     €r    r5   z"subset_lookups.<locals>.<listcomp>µ  s;   ø€ ð ð ð àØðð Ô,°Ð>Ð>ð à>Ð>Ð>r"   r   rŸ   )	rµ  r    r¶   r”  r’  rù   rR  rf   rÌ  )r&   r@  r�   râ  rÑ   rÒ  s    `    r    rA  rA  ”  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’  rR  rÌ  )r   râ  rÑ   rÒ  r�   s       €r    r5   z#collect_lookups.<locals>.<listcomp>Í  sŒ   ø€ ð 
ð 
ð 
àØð
õ ˜R ¤Ñ(Ô(ð	
ð 
ð Øð
õ ˜a ¤Ñ0Ô0ð
ð 
ð Øð
ØÔð
ð 
ð 
ð 
ð 
r"   r­   c                ó    — g | ]}|¯|j         ‘ŒS r   rõ  )r   rÒ  s     r    r5   z#collect_lookups.<locals>.<listcomp>×  s    € ÐQÐQÐQ rÈbÐQ�Ô"ÐQÐQÐQr"   r   rŸ   )rµ  r    r¶   r”  rR  )r&   r�   s    @r    rC  rC  Ã  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    ÚExtSubTablero   rm   s      r    ro   ro   Ü  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ý  rG  r¯   s    r    rG  rG  ä  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ý  rv   ru   s     r    rv   rv   ì  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Ë   rE  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ý  rA  r?  s     r    rA  rA  ü  s<   € à„{�aÒÐØÔ×.Ò.¨~Ñ>Ô>Ð>à4Ð&¨¬Ñ4Ñ4Ô4Ð4r"   c                ón   — | j         dk    r| j                             ¦   «         S J d| j         z  ¦   «         ‚rü  )r    rý  rC  r¯   s    r    rC  rC    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Úgetr7   rB   Úissubsetrk   ÚSubTablero   )r&   rn   rj   ÚkeyÚdoneLookupsr3   ÚcoveredÚsts           r    ro   ro     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¦  «        ra| j        �Z| j        ‰j        vr(d | _        | xj        dz  c_        | xj        dz  c_        n$‰j                             | j        ¦  «        | _        t          | j        ¦  «        S )Nc                óB   •— g | ]}|¯|                      ‰¦  «        ¯|‘ŒS r   ©rv   )r   r  rn   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>#  s1   ø€ ÐNÐNÐN˜B°2ÐN¸"×:JÒ:JÈ1Ñ:MÔ:MÐN�RÐNÐNÐNr"   ÚMarkFilteringSetiïÿÿÿé   )	r  r7   ÚSubTableCountr²  r  Úused_mark_setsÚ
LookupFlagrf   rt   ru   s    `r    rv   rv   !  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ŒO˜sÑ"ˆ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  rA  )r&   r@  rn   s      r    rA  rA  :  s4   € àŒ]ð )ð )ˆØ	×Ò˜Ñ(Ô(Ð(Ð(ð)ð )r"   c                ó@   — t          d„ | j        D ¦   «         g ¦  «        S )Nc              3  óB   K  — | ]}|¯|                      ¦   «         V — Œd S r   )rC  ©r   r  s     r    r!   z"collect_lookups.<locals>.<genexpr>B  s3   è è € ÐCÐC¨ÀÐC�×"Ò"Ñ$Ô$ÐCÐCÐCÐCÐCÐCr"   )Úsumr  r¯   s    r    rC  rC  @  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   )rG  r  s     r    r!   z$may_have_non_1to1.<locals>.<genexpr>G  s3   è è € ÐDÐD¨"ÀÐDˆr×#Ò#Ñ%Ô%ÐDÐDÐDÐDÐDÐDr"   )rV   r  r¯   s    r    rG  rG  E  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   r2   r4   rn   s      €r    r5   z!subset_glyphs.<locals>.<listcomp>M  s3   ø€ ÐMÐMÐM‘$�!�Q°AÐM¸!¿/º/È!Ñ:LÔ:LÐMˆAÐMÐMÐMr"   )r<   rË  ru   s    `r    rv   rv   J  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  r4   s        r    rË   rË   P  sF   € à
€CØŒ[ð ð ˆØð 	ØØ×Ò˜t WÑ-Ô-ð 	ØˆCøØ€Jr"   c                óÆ   ‡ — ‰                       ¦   «          ˆ fd„|D ¦   «         ‰ _        t          ‰ j        ¦  «        ‰ _        ‰ j        D ]}|                     |¦  «         Œd S )Nc                ó@   •— g | ]}|‰j         k     ¯‰j        |         ‘ŒS r   )ÚLookupCountrË  rK   s     €r    r5   z"subset_lookups.<locals>.<listcomp>^  s,   ø€ ÐRÐRÐR a¸QÀÔAQÒ=QÐ=Q�4”;˜q”>Ð=QÐ=QÐ=Qr"   )ÚensureDecompiledrË  r7   r$  rA  )r&   r@  r4   s   `  r    rA  rA  [  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   r2   r4   r@  s      €r    r5   z"neuter_lookups.<locals>.<listcomp>h  s8   ø€ ð ð ð Ù/3¨q°!ˆQ�.Ð Ð ˆˆ dðð ð r"   N)r%  r<   rË  r?  s    `r    Úneuter_lookupsr)  d  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Ë  rC  rK   s     €r    r!   z"closure_lookups.<locals>.<genexpr>t  sB   øè è € ÐWÐW°!À!ÀdÔFVÒBVÐBVˆTŒ[˜Œ^×+Ò+Ñ-Ô-ÐBVÐBVÐBVÐBVÐWÐWr"   c                ó2   •— g | ]}|‰v¯|‰j         k     ¯|‘ŒS r   )r$  )r   r4   r@  r&   s     €€r    r5   z#closure_lookups.<locals>.<listcomp>w  s;   ø€ ð 
ð 
ð 
àØ˜Ð&Ð&¨1¨tÔ/?Ò+?Ð+?ð à+?Ð+?Ð+?r"   )r   r  Úextend)r&   r@  ÚrecurseÚrecurse_lookupss   ``  r    Úclosure_lookupsr0  m  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   r4   r@  s     €r    r5   z"subset_lookups.<locals>.<listcomp>†  s#   ø€ ÐSÐSÐS !¸qÀNÐ?RÐ?R˜AÐ?RÐ?RÐ?Rr"   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   re   r3  s     €r    r5   z"subset_lookups.<locals>.<listcomp>ˆ  s'   ø€ ÐRÐRÐR¸˜N×0Ò0°Ñ3Ô3ÐRÐRÐRr"   )rÌ  r7   r$  Ú
isinstanceÚFeatureParamsr   ÚFeatureParamsSizer?  s    `r    rA  rA  ƒ  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)ÚFeaturerA  Ú
FeatureTag)r   r2   Úfr@  s      €r    r5   z"subset_lookups.<locals>.<listcomp>™  sN   ø€ ð ð ð áˆAˆqØŒI×$Ò$ ^Ñ4Ô4ðð 9:¼ÈÒ8NÐ8Nð 	
à8NÐ8NÐ8Nr"   )r<   ÚFeatureRecordr?  s    `r    rA  rA  ’  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Ì  rK   s     €r    r!   z"collect_lookups.<locals>.<genexpr>£  sK   øè è € ð 	
ð 	
àØ�4Ô$Ò$Ð$ð Ô˜qÔ!Ô)Ô9à$Ð$Ð$Ð$ð	
ð 	
r"   )r  ©r&   Úfeature_indicess   ` r    rC  rC     s@   ø€ åð	
ð 	
ð 	
ð 	
à$ð	
ñ 	
ô 	
ð
 	ñô ð r"   c                ó¸   — |                       ¦   «          t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r%  r9   r?  r7   rB  rt   rC  s     r    Úsubset_featuresrF  ¬  sM   € à×ÒÑÔÐÝ% dÔ&8¸/ÑJÔJ€DÔÝ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ñ"Ô"Ð"r"   c                ó*   ‡— ˆfd„| j         D ¦   «         S )r9  c                óR   •— g | ]#}|j                              ‰¦  «        ¯|j        ‘Œ$S r   )r<  rA  ÚFeatureIndex)r   rÑ   r@  s     €r    r5   z"subset_lookups.<locals>.<listcomp>·  sA   ø€ ð ð ð àØŒ9×#Ò# NÑ3Ô3ðØ	Œðð ð r"   )ÚSubstitutionRecordr?  s    `r    rA  rA  ´  s1   ø€ ðð ð ð àÔ(ðñ ô ð r"   c                óF   ‡— t          ˆfd„| j        D ¦   «         g ¦  «        S )r9  c              3  óL   •K  — | ]}|j                              ‰¦  «        V — Œd S r   )ÚFeatureTableSubstitutionrA  )r   r>  r@  s     €r    r!   z!subset_lookups.<locals>.<genexpr>Â  sH   øè è € ð 	
ð 	
àð Ô&×5Ò5°nÑEÔEð	
ð 	
ð 	
ð 	
ð 	
ð 	
r"   ©r  ÚFeatureVariationRecordr?  s    `r    rA  rA  ¾  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   )rM  rJ  rI  r<  rÌ  )r   ÚvrrÑ   rD  s      €r    r!   z"collect_lookups.<locals>.<genexpr>Í  s^   øè è € ð 	
ð 	
àØÔ0ÔCð	
ð 	
ð ØŒ~ Ð0Ð0ð ŒIÔ%ð 1Ð0Ð0Ð0Ð0ð		
ð 	
r"   rN  rC  s    `r    rC  rC  Ê  sC   ø€ åð	
ð 	
ð 	
ð 	
àÔ1ð	
ñ 	
ô 	
ð 	ñô ð r"   c                ó  ‡— |                       ¦   «          ˆfd„| j        D ¦   «         | _        | j        D ]!}‰                     |j        ¦  «        |_        Œ"t	          | j        ¦  «        | _        t          | j        ¦  «        S )Nc                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   )rI  )r   rÑ   rD  s     €r    r5   z#subset_features.<locals>.<listcomp>Ú  s,   ø€ ð ð ð Ø¨a¬nÀÐ.OÐ.OˆÐ.OÐ.OÐ.Or"   )r%  rJ  rf   rI  r7   ÚSubstitutionCountrt   ©r&   rD  rÑ   s    ` r    rF  rF  ×  s”   ø€ à×ÒÑÔÐðð ð ð ØÔ*ðñ ô €DÔð Ô$ð ?ð ?ˆØ(×.Ò.¨q¬~Ñ>Ô>ˆŒˆÝ  Ô!8Ñ9Ô9€DÔÝ�Ô&Ñ'Ô'Ð'r"   c                óî   ‡— |                       ¦   «          ˆfd„| j        D ¦   «         | _        | j        D ]}‰|j                 |_        Œt          | j        ¦  «        | _        t          | j        ¦  «        S )Nc                óJ   •— g | ]}|j         ‰                     ¦   «         v ¯|‘Œ S r   )rI  Úkeys)r   rÑ   Úfeature_index_maps     €r    r5   z"prune_features.<locals>.<listcomp>ç  s9   ø€ ð ð ð Ø¨a¬nÐ@Q×@VÒ@VÑ@XÔ@XÐ.XÐ.XˆÐ.XÐ.XÐ.Xr"   )r%  rJ  rI  r7   rU  rt   ©r&   rZ  rÑ   s    ` r    Úprune_featuresr\  ä  s‹   ø€ à×ÒÑÔÐðð ð ð ØÔ*ðñ ô €DÔð Ô$ð ;ð ;ˆØ*¨1¬>Ô:ˆŒˆÝ  Ô!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%  rO  rM  rF  rU  Úpopr7   ÚFeatureVariationCountrt   rV  s      r    rF  rF  ñ  sË   € à×ÒÑÔÐØÔ(ð Dð DˆØ	Ô"×2Ò2°?ÑCÔCÐCÐCð 	Ô#ð*àÔ+Øô
ä
"Ô#4ð	*ð 	Ô#×'Ò'Ñ)Ô)Ð)ð 	Ô#ð*àÔ+Øô
ä
"Ô#4ð	*õ "% TÔ%@Ñ!AÔ!A€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 r^  )	r%  rO  rM  r\  rU  r_  r7   r`  rt   r[  s      r    r\  r\    sÌ   € à×ÒÑÔÐØÔ(ð Eð EˆØ	Ô"×1Ò1Ð2CÑDÔDÐDÐDð 	Ô#ð*àÔ+Øô
ä
"Ô#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>  rD  s     €r    r5   z#subset_features.<locals>.<listcomp>  s#   ø€ ÐNÐNÐN˜q¸¸oÐ9MÐ9M˜Ð9MÐ9MÐ9Mr"   c                óB   •— g | ]}|‰v ¯‰                      |¦  «        ‘ŒS r   re   re  s     €r    r5   z#subset_features.<locals>.<listcomp>  s8   ø€ ð ð ð Ø%&¸qÀOÐ?SÐ?Sˆ×Ò˜aÑ Ô Ð?SÐ?SÐ?Sr"   )ÚReqFeatureIndexrf   rI  r7   rB  rt   rC  s    `r    rF  rF    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¦  «        | _        ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p
| j        dk    ¦  «        S )Nrc  c                óL   •— g | ] }|‰                      ¦   «         v ¯‰|         ‘Œ!S r   )rY  )r   r>  rZ  s     €r    r5   z"prune_features.<locals>.<listcomp>'  s=   ø€ ð ð ð Ø!"¸1Ð@Q×@VÒ@VÑ@XÔ@XÐ;XÐ;XÐ˜!ÔÐ;XÐ;XÐ;Xr"   )r  rg  rI  r7   rB  rt   )r&   rZ  s    `r    r\  r\  $  s   ø€ à,×0Ò0°Ô1EÀuÑMÔM€DÔðð ð ð Ø&*Ô&7ðñ ô €DÔõ ˜DÔ-Ñ.Ô.€DÔÝ�Ô!ÐB TÔ%9¸UÒ%BÑCÔCÐCr"   c                óˆ   — | j         d d …         }| j        dk    r|                     | j        ¦  «         t          |¦  «        S ©Nrc  )rI  rg  Úappendr   rC  s     r    Úcollect_featuresrm  .  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   )ÚLangSysrF  )r   r4   rD  s     €r    r5   z#subset_features.<locals>.<listcomp>>  s>   ø€ ð ð ð Ø¨¬×)BÒ)BÀ?Ñ)SÔ)SðØ	ðð ð r"   )ÚDefaultLangSysrF  ÚLangSysRecordr7   ÚLangSysCountrt   )r&   rD  ÚkeepEmptyDefaultLangSyss    ` r    rF  rF  6  s™   ø€ ð 	Ôð#àÔ#×3Ò3°OÑDÔDð#ð (ð#ð
 #ˆÔðð ð ð ØÔ%ðñ ô €DÔõ ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ð8 TÔ%8Ñ9Ô9Ð9r"   c                óð   ‡— | j         r#| j                              ‰¦  «        s	|sd | _         ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p| j         ¦  «        S )Nc                óH   •— g | ]}|j                              ‰¦  «        ¯|‘ŒS r   )rp  r\  )r   r4   rZ  s     €r    r5   z"prune_features.<locals>.<listcomp>M  s?   ø€ ð ð ð Ø¨¬×)AÒ)AÐBSÑ)TÔ)TðØ	ðð ð r"   )rq  r\  rr  r7   rs  rt   )r&   rZ  rt  s    ` r    r\  r\  E  sš   ø€ ð 	Ôð#àÔ#×2Ò2Ð3DÑEÔEð#ð (ð#ð
 #ˆÔðð ð ð ØÔ%ðñ ô €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   )rp  rm  )r   r4   s     r    r5   z$collect_features.<locals>.<listcomp>V  s&   € ÐPÐPÐP¸�q”y×1Ò1Ñ3Ô3ÐPÐPÐPr"   )rr  rq  rl  rm  r   r  rC  s     r    rm  rm  T  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)ÚScriptrF  Ú	ScriptTag)r   rn   rD  Úretain_emptys     €€r    r5   z#subset_features.<locals>.<listcomp>_  sR   ø€ ð ð ð àØŒ8×#Ò# O°Q´[ÀFÒ5JÑKÔKðð ð	Ø	ðð ð r"   ©ÚScriptRecordr7   ÚScriptCountrt   )r&   rD  r  s    ``r    rF  rF  \  ó]   øø€ ðð ð ð ð àÔ"ðñ ô €DÔõ ˜4Ô,Ñ-Ô-€DÔÝ�Ô Ñ!Ô!Ð!r"   c                ó’   ‡‡— ˆˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | j        ¦  «        S )Nc                ó`   •— g | ]*}|j                              ‰|j        d k    ¦  «        s‰¯(|‘Œ+S r{  )r}  r\  r~  )r   rn   rZ  r  s     €€r    r5   z"prune_features.<locals>.<listcomp>l  sS   ø€ ð ð ð àØŒ8×"Ò"Ð#4°a´kÀVÒ6KÑLÔLðð ð	Ø	ðð ð r"   r€  )r&   rZ  r  s    ``r    r\  r\  i  rƒ  r"   c                óZ   — t          t          d„ | j        D ¦   «         g ¦  «        ¦  «        S )Nc              3  óH   K  — | ]}|j                              ¦   «         V — Œd S r   )r}  rm  ©r   rn   s     r    r!   z#collect_features.<locals>.<genexpr>x  s0   è è € ÐRÐR¸1˜1œ8×4Ò4Ñ6Ô6ÐRÐRÐRÐRÐRÐRr"   )r   r  r�  r¯   s    r    rm  rm  v  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   rJ   )r   Únrn   s     €r    r5   z!subset_glyphs.<locals>.<listcomp>€  s    ø€ Ð"SÐ"SÐ"S¨ÀQÈ!Ì(À]À] 1À]À]À]r"   c                ó    — g | ]}|j         ¯	|‘ŒS r   )Únames)r   r2   s     r    r5   z!subset_glyphs.<locals>.<listcomp>�  s   € Ð MÐ MÐ M qÀQÄWÐ M Ð MÐ MÐ Mr"   c                ó    — g | ]}|j         ¯	|‘ŒS r   )ÚindexSubTablesrˆ  s     r    r5   z!subset_glyphs.<locals>.<listcomp>‚  s    € Ð@Ð@Ð@˜!¨qÔ/?Ð@�AÐ@Ð@Ð@r"   T)Ústrikesr�  rŽ  )r&   rn   ÚstrikeÚindexSubTables    `  r    rv   rv   |  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   r’  s     €r    r.   z,subset_glyphs.<locals>.<listcomp>.<dictcomp>‹  s$   ø€ Ð7Ð7Ð7˜!¨1°¨;¨;ˆˆF�1ŒI¨;¨;¨;r"   rJ   )r   r’  rn   s    @€r    r5   z!subset_glyphs.<locals>.<listcomp>Š  s>   øø€ ð ð ð Ø<BÐ7Ð7Ð7Ð7˜qœxÐ7Ñ7Ô7ðð ð r"   c                ó   — g | ]}|¯|‘ŒS r   r   )r   r’  s     r    r5   z!subset_glyphs.<locals>.<listcomp>�  s   € ÐAÐAÐA &¸&ÐA�vÐAÐAÐAr"   T)Ú
strikeData)r&   rn   rš  s    ` r    rv   rv   ˆ  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   rJ   r˜  s     €r    r.   z!subset_glyphs.<locals>.<dictcomp>–  s.   ø€ ÐUÐUÐU°À!ÀvÄ}ÐBTÐBT˜˜FœM¨!Ô,ÐBTÐBTÐBTr"   T)r‘  ra   r'   )r&   rn   r’  s     @r    rv   rv   “  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É  Ú
ScriptListrm  ÚFeatureListrC  r¶   r   r   rÊ  r  rÈ  r'   r$  rË  ro   )r&   rn   rD  r@  Úorig_glyphsr2   s         r    ro   ro   ›  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Ê  rv   rA  )r&   rn   r@  s      r    rv   rv   ¹  sP   € àŒ€A„HØ„zÔð ØœÔ.×<Ò<¸QÑ?Ô?ˆˆàˆØ×Ò˜Ñ'Ô'Ð'Øˆ4r"   c                ó<   — | j         t          j        d¦  «        k    S )Nrž  )r³  r   ÚgetTableClassr¯   s    r    Úretain_empty_scriptsr©  Ä  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.r   N)
rÉ  rÊ  rA  r¢  r¶   r   r   rF  r¡  r©  )r&   r@  rD  s      r    rA  rA  Ë  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)  â  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 lookupsr   N)rÉ  r¡  rm  r¢  rC  r¶   r   r   rÊ  r0  rA  r)  )r&   rM   rD  r@  s       r    Úprune_lookupsr­  é  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   r2   r>  Úfeature_tagss      €r    r5   z'subset_feature_tags.<locals>.<listcomp>  s4   ø€ ð 
ð 
ð 
á��1ØŒ|˜|Ð+Ð+ð à+Ð+Ð+r"   r   )	rÉ  r¢  r<   r?  rF  r¶   r   r¡  r©  )r&   r°  rD  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   )r~  )r   rn   Úscript_tagss     €r    r5   z&subset_script_tags.<locals>.<listcomp>  s,   ø€ ð .
ð .
ð .
Ø¸Q¼[ÈKÐ=WÐ=WˆAÐ=WÐ=WÐ=Wr"   z*   c                ó<   •— g | ]}|j         ‰‰j                 v ¯|‘ŒS r   )Ú
LangSysTagr~  )r   r4   ÚlangsysÚrecords     €€r    r5   z&subset_script_tags.<locals>.<listcomp>%  s8   ø€ ð /ð /ð /àØ”| w¨vÔ/?Ô'@Ð@Ð@ð à@Ð@Ð@r"   Údflt)rB   ÚsplitrÍ  ÚljustÚ
setdefaultrÉ  r¡  r�  r7   r‚  r~  r}  rr  rs  rq  )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 and duplicate features in FeatureList
    Remove unreferenced features and remap duplicate feature indices in ScriptList and FeatureVariations
    r   N)
rÉ  r¡  rm  Úremap_duplicate_featuresr¢  rF  r¶   r   r\  r©  )r&   rD  rZ  s      r    r\  r\  /  sö   € ð
 „zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ+/×+HÒ+HØñ,ô ,Ñ(€_Ð'ð „zÔð @ØŒ
Ô×.Ò.¨Ñ?Ô?Ð?ÝˆtŒzÐ.°Ñ5Ô5ð GØŒ
Ô$×3Ò3Ð4EÑFÔFÐFØ„zÔð 
ØŒ
Ô×,Ò,Ø˜t×8Ò8Ñ:Ô:ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r"   c                ó*  — | j         j        j        }i }i }|D ]y}||         }|j        }|                     |¦  «        }|€t          |g¦  «        ||<   |||<   ŒAd}	|D ]}
||
         |k    r	d}	|
||<    nŒ|	s|                     |¦  «         |||<   Œzi }d}|D ]?}|                     ||¦  «        }|                     |¦  «        }|€|||<   |dz  }Œ:|||<   Œ@t          t          d„ | 	                    ¦   «         D ¦   «         g ¦  «        ¦  «        }||fS )zPReturn retained feature indices(without duplicates) and remapped feature indicesNFTr   r›   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   )r`   rˆ  s     r    r!   z+remap_duplicate_features.<locals>.<genexpr>p  s(   è è € Ð7Ð7˜�T�!‰WŒWÐ7Ð7Ð7Ð7Ð7Ð7r"   )
rÉ  r¢  r?  r=  r  rB   rÍ  r   r  ra   )r&   rD  ÚfeaturesÚunique_featuresÚduplicate_featuresr2   r>  rÀ  Úsame_tag_featuresÚfoundÚother_iÚfeature_mapÚnew_idxÚunique_irU   Úretained_feature_indicess                   r    rÅ  rÅ  F  s‡  € ð ŒzÔ%Ô3€Hà€OØÐØð &ð &ˆØ�QŒKˆØŒlˆà+×/Ò/°Ñ4Ô4ÐØÐ$Ý#&¨ s¡8¤8ˆO˜CÑ Ø$%Ð˜qÑ!ØàˆØ(ð 	ð 	ˆGØ˜Ô  AÒ%Ð%Ø�Ø(/Ð" 1Ñ%Ø�ð &ð
 ð 	&Ø×!Ò! !Ñ$Ô$Ð$Ø$%Ð˜qÑ!øð €KØ€Gàð ð ˆØ%×)Ò)¨!¨QÑ/Ô/ˆØ�OŠO˜HÑ%Ô%ˆØˆ9Ø$ˆK˜‰NØ�q‰LˆGˆGàˆK˜‰NˆNå)ÝÐ7Ð7˜o×4Ò4Ñ6Ô6Ð7Ñ7Ô7¸Ñ<Ô<ñ ô  Ðð % kÐ2Ð2r"   c                ó¾   — d|j         vr|                      |j         ¦  «         d|j        vr|                      |j        ¦  «         |                      d¬¦  «         dS )Nr   FrØ   T)Úlayout_scriptsrÃ  Úlayout_featuresr±  r­  rE  s      r    Úprune_pre_subsetrÕ  u  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 rk  )rÉ  r¡  r¢  r?  r�  r}  rq  rr  rp  r7   rI  rg  rÎ  Úremove)r&   rÉ  rÈ  rn   r-   Úlrr4   r2   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 )Nr   i  é   T)rÉ  r­  rÊ  rË   r¢  rÙ  r\  r²  r   rO  Ú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   rT   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>Ù  s,   ø€ ð .
ð .
ð .
Ù�Q˜È1ÐPVÈ;È;ˆAˆqÈ;È;È;r"   c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rT   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>Ý  s+   ø€ ð )
ð )
ð )
Ù�Q˜ÀaÈ6ÀkÀkˆAˆqÀkÀkÀkr"   c                ó@   •— g | ]}|‰k     ¯‰j         j        |         ‘ŒS r   )Ú
AttachListÚAttachPoint)r   r2   r¨   rÉ  s     €€r    r5   z!subset_glyphs.<locals>.<listcomp>ã  s0   ø€ ð (
ð (
ð (
Ø01ÀÀJÂÀˆEÔÔ(¨Ô+ÀÀÀr"   ÚMarkGlyphSetsDefc                ó&   — g | ]\  }}|j         ¯|‘ŒS r   rJ   rß   s      r    r5   z!subset_glyphs.<locals>.<listcomp>í  s#   € ÐXÐXÐX¡$ ! QÈqÌxÐX˜AÐXÐXÐXr"   c                ó    — g | ]}|j         ¯	|‘ŒS r   rJ   )r   r�   s     r    r5   z!subset_glyphs.<locals>.<listcomp>î  s   € Ð!PÐ!PÐ!P¨ÀqÄxÐ!P !Ð!PÐ!PÐ!Pr"   T)r¦  rÉ  ÚLigCaretListr¡   rG   r9   r�   r7   ÚLigGlyphCountÚMarkAttachClassDefrQ   rW   ÚGlyphClassDefrã  r¨   rä  r²  rå  r<   r  )r&   rn   r8   ÚmarkGlyphSetsÚcoverager¨   r'   rÉ  s        @@@r    rv   rv   Ð  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ï  rB   Úcollect_device_varidxesÚsubset_varidxesÚremap_device_varidxes)r(   ÚgdefrÉ  ÚstoreÚusedVarIdxesÚ
varidx_maps         r    Ú
_pruneGDEFr÷  ó  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ê  rQ   rë  rã  r¨   r²  r÷  rï  ÚVarDataCountrÜ  rå  r¡   rt   rÝ  s       r    rË   rË   	  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    r5   z$prune_pre_subset.<locals>.<listcomp>3	  s'   € ÐMÐMÐM˜QµW¸QÀÑ5LÔ5LÐM�qÐMÐMÐMr"   )Ú
kernTablesrt   rE  s      r    rÕ  rÕ  0	  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  rU   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    r5   z!subset_glyphs.<locals>.<listcomp>@	  s   € ÐAÐAÐA˜Q°Q´[ÐA�qÐAÐAÐAr"   )r¦  r  rþ  rW   rt   )r&   rn   r   r'   s      @r    rv   rv   7	  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_emptiedrt   ©r&   rn   r   s      r    rv   rv   D	  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    rv   rv   L	  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   Úszr4   rn   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>V	  s+   ø€ ÐNÐNÐN±5°2°q�•\ ! Q¤XÑ.Ô.ÐNÐNÐNr"   r   )r  rW   r	  rt   )r&   rn   r  r   s    `  r    rv   rv   T	  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   rx   rÉ  s     €r    r.   z!subset_glyphs.<locals>.<dictcomp>a	  s5   ø€ ð ð ð Ø(-¸UÀeÄmÐ=SÐ=SˆˆuŒ}˜UÔ#Ð=SÐ=SÐ=Sr"   )rÉ  ÚAnchorPointsr    r'   r  r7   ©r&   rn   rÉ  s     @r    rv   rv   ]	  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    ro   ro   g	  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>r	  sA   ø€ ð 
ð 
ð 
àð �5Ô'×+Ò+¨E°5Ô3HÑIÔIð
ð 
ð 
r"   r   r›   c                ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   rx   r  Ú
mostCommons      €r    r.   z!subset_glyphs.<locals>.<dictcomp>y	  s$   ø€ ÐWÐWÐW¡h e¨QÀqÈJÂÀ˜ ÀÀÀr"   r¬   T)rÉ  r  r    r'   r7   r   ra   Úmost_commonr  rW   r  )r&   rn   Ú	baselinesÚ_cntr!  rÉ  s       @@r    rv   rv   n	  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(  r7   r  s     @r    rv   rv   ‚	  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Ú
glyphOrderrE  s      r    rÕ  rÕ  Ž	  s/   € àÔð 1 GÔ$:ð 1Ø.0ˆŒ˜œ¨Ô*Ñ+Øˆ4r"   c                óš   — t          | j        |j        ¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r/   r/  r'   r7   Ú
glyphCountrt   ru   s     r    rv   rv   •	  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»  rU   rö  s      €r    r.   z$_remap_index_map.<locals>.<dictcomp>�	  s#   ø€ ÐCÐCÐC¡  AˆAˆz˜!Œ}ÐCÐCÐCr"   r   )rl   rW   Úlast_retained_glyphÚreverseEmptiedGlyphMapÚlast_retained_order)rn   rö  Ú	table_mapÚmap_Úlast_idxr   r2   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É  rB   ÚAdvWidthMapr/   rl   r'   rk   ra   ÚreverseOrigGlyphMapÚcopyrÊ   Úretain_gidsÚLsbMapÚRsbMaprï  rñ  r;  ©r&   rn   rÉ  ÚusedÚ	advIdxes_ÚretainAdvMaprö  s          r    rv   rv   §	  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É  rB   ÚAdvHeightMapr/   rl   r'   rk   ra   rB  rC  rÊ   rD  ÚTsbMapÚBsbMapÚVOrgMaprï  rñ  r;  rG  s          r    rv   rv   Í	  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   rJ   rr   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>ú	  s-   ø€ ð ð ð Ù��A¸¸Q¼X¸¸ˆˆ1¸¸¸r"   T)ÚVOriginRecordsrW   r7   ÚnumVertOriginYMetricsru   s    `r    rv   rv   ø	  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>
  rZ  r"   Fzunknown 'opbd' format %s)rÉ  ÚOpticalBoundsr    r'   rY  r7   r\  r  s     @r    rv   rv   
  sÇ   ø€ àŒJÔ$€EØ„|�qÒÐð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1Ø	Œ˜Ò	Ð	ð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1à?Ð0°5´<Ñ?Ñ?Ô?Ð?r"   Úpostc                ó"   — |j         sd| _        dS )Nç      @T)Úglyph_namesÚ
formatTyperE  s      r    rÕ  rÕ  
  s   € àÔð ØˆŒØˆ4r"   c                ó   — g | _         dS rû   )Ú
extraNamesru   s     r    rv   rv   
  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   re  s     €r    r.   z!subset_glyphs.<locals>.<dictcomp>)
  s=   ø€ ð 
ð 
ð 
ØBCˆAˆtŒ×"Ò" 1 dÔ&<Ñ=Ô=ð
ð 
ð 
r"   c                ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   r   re  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    ri  r'   rh  r   ra   r"  rW   r7   )r&   rn   r$  r!  re  s      @@r    rv   rv   #
  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"   )rB   Útraverse)rr  Úcolrrt  rs  s      @r    Ú_paint_glyph_namesrw  :
  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>P
  s.   € ð 
ð 
ð 
àð ŒM˜3œ9ð
ð 
ð 
r"   )ÚversionÚ_decompileColorLayersV0rÉ  ÚColorLayersÚBaseGlyphListÚBaseGlyphPaintRecordÚColorLayersV1r'   rB   r  rÍ  r¹   rk   rw  )r&   rn   Ú	decomposeÚlayersr   Úlayerrr  s          r    ro   ro   H
  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   )r  rR   s     €r    r.   z!subset_glyphs.<locals>.<dictcomp>y
  s7   ø€ ð ð ð Ø#$°A¸Ô9IÐ4IÐ4Iˆˆ4Ô˜AÔÐ4IÐ4IÐ4Ir"   c                ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rJ   )r   r   ÚcolorGlyphsV1rn   s     €€r    r.   z!subset_glyphs.<locals>.<dictcomp>�
  s'   ø€ ÐEÐEÐE °q¸A¼H°}°}ˆˆM˜!Ô°}°}°}r"   c                ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rJ   )r   r   Úclipsrn   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   r…  s     r    r5   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.unbuilderr‡  ÚfontTools.colorLib.builderrˆ  r‰  Úglyphs_colredr'   r  r}  rt   rÉ  Ú	LayerListr€  r‚  ÚClipListrŽ  r�  )r&   rn   r‡  rˆ  r‰  rŽ  rŒ  r’  s   ``   @@@r    rv   rv   f
  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 Trx  Fc                óî   •— t          | d¦  «        r"‰| j                                      | ¦  «         d S t          | d¦  «        r/| j        j        D ]$}‰|j                                      |¦  «         Œ#d S d S )NÚPaletteIndexÚ	ColorLine)r²  r›  rl  rœ  Ú	ColorStop)rr  Ú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   rc  c                ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   )r   r2   r�   Úretained_palette_indicess      €r    r5   z%prune_post_subset.<locals>.<listcomp>À
  s(   ø€ ÐXÐXÐX™D˜A˜q¸!Ð?WÐ:WÐ:W�aÐ:WÐ:WÐ:Wr"   r‘  r›  r›   )r  r   r`   r}  r  ra   r‘  rl  rÉ  ÚLayerRecordArrayÚLayerRecordr›  r€  r�  r|  ru  rB   rY  Úpalettesr<   r7   r$   r²  ÚAssertionErrorÚnumPaletteEntriesÚpaletteEntryLabelsrt   )r&   r(   rÊ   rv  r   r„  r…  rº  ÚpaletteÚ	new_indexÚ	old_indexÚkept_labelsr2   ÚlabelrŸ  r¢  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   )rB   ÚMathGlyphVariantRecordrÍ  ÚVariantGlyphÚGlyphAssemblyÚPartRecordsrx   )r&   r'   ÚvariantsrU   rÔ   s        r    ro   ro   ×
  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'   rB   ÚVertGlyphCoverager>   rk   ÚVertGlyphConstructionro   ÚHorizGlyphCoverageÚHorizGlyphConstruction)r&   rn   r'   r³  r8   r2   s         r    ro   ro   â
  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¡   rG   r'   r9   ÚVarCompositeGlyphsÚVarCompositeGlyphrt   r©   s      r    rv   rv   ô
  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   r2   Ú	glyphNames      r    r.   z"closure_glyphs.<locals>.<dictcomp>  s   € ÐWÐWÐW¡  I�	˜1ÐWÐWÐWr"   )rÉ  r»  r<   r¡   r'   r¼  rB   r  Ú
componentsr¿  rÍ  )r&   rn   ÚglyphMapÚglyphRecordsr'   r  ÚnewÚoldNewr¿  Úidxrx   Úcompr¹   s                r    ro   ro   ý
  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É  ÚMultiVarStorerB   Úcollect_varidxesrñ  Úremap_varidxesÚAxisIndicesListÚItemr»  r¼  rÀ  ÚaxisIndicesIndexrÍ  r$   r9   r<   ÚConditionListÚConditionTableÚconditionIndex)r&   r(   rÊ   rÉ  rô  rõ  rö  ÚaxisIndicesListÚusedIndicesrx   rÆ  rl   ÚconditionListÚconditionTabless                 r    rË   rË     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É  ÚMathVariantsro   ru   s     r    ro   ro   F  s8   € à„zÔð 2ØŒ
Ô×.Ò.¨qÑ1Ô1Ð1Ð1Ð1ð2ð 2r"   c                óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r¡   rG   r'   r9   ÚItalicsCorrectionr7   ÚItalicsCorrectionCountrt   r©   s      r    rv   rv   L  sR   € àŒm×"Ò" 1¤8Ñ,Ô,€GÝ)¨$Ô*@À'ÑJÔJ€DÔÝ"% dÔ&<Ñ"=Ô"=€DÔÝ�Ô+Ñ,Ô,Ð,r"   c                óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )ÚTopAccentCoveragerG   r'   r9   ÚTopAccentAttachmentr7   ÚTopAccentAttachmentCountrt   r©   s      r    rv   rv   T  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   )ÚMathKernCoveragerG   r'   r9   ÚMathKernInfoRecordsr7   ÚMathKernCountrt   r©   s      r    rv   rv   \  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û   )ÚMathItalicsCorrectionInforv   ÚMathTopAccentAttachmentÚMathKernInfoÚExtendedShapeCoveragerG   r'   ru   s     r    rv   rv   d  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µ  rG   r'   r9   r¶  r7   ÚVertGlyphCountr·  r¸  ÚHorizGlyphCountr©   s      r    rv   rv   q  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É  ÚMathGlyphInforv   rÜ  ru   s     r    rv   rv   €  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­   éÿ   r´  é@   é€   é    )ÚdataÚstructÚunpackÚ	bytearrayrÈ   )r&   Ú
glyphidmaprú  r2   Ú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'   rB   ÚgetComponentNamesrÍ  rk   )r&   rn   ÚglyphSetrƒ  rÀ  r   Úglr�   s           r    ro   ro   ¨  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.  r0  Ú__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   rJ   )r   r2   r   rn   s      €r    r5   z!subset_glyphs.<locals>.<listcomp>Ç  s$   ø€ ÐMÐMÐM™˜˜A¸qÀAÄH¸}¸}�1¸}¸}¸}r"   c                ó   — i | ]\  }}||“Œ	S r   r   )r   rŒ  Ú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    r5   z!subset_glyphs.<locals>.<listcomp>Ð  s7   ø€ ð ð ð Ø a¨1¬8 m m°q¸AÔ<LÐ7LÐ7LˆÐ7LÐ7LÐ7Lr"   T)r/   r'   rÊ   rD  r<   r0  ra   r²  r  r   ÚgetTableModulerq  r	  rú  )r&   rn   r8   ÚglyphmaprU   rq  r   s    `     r    rv   rv   Ã  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'   ra   Útrim)r&   r(   rÊ   r  rU   s        r    rË   rË   ×  sE   € à œÐ(€NØŒ[×ÒÑ!Ô!ð .ð .ˆØ	�Š˜nˆÑ-Ô-Ð-Ð-Øˆ4r"   Úcmapc                ó   ‡‡
— d„ | j         D ¦   «         }‰j        j        rXt          ¦   «         }‰j        D ](}t          |¦  «        }|�|                     |¦  «         Œ)‰j                             |¦  «         |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    r5   z"closure_glyphs.<locals>.<listcomp>á  s%   € Ð6Ð6Ð6�A¨¯ª©¬Ð6ˆaÐ6Ð6Ð6r"   é   c                ó,   •— h | ]\  }}|‰j         v ¯|’ŒS r   ©Úunicodes_requested©r   Úur   rn   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>ù  s'   øè è € Ð:Ð:¨˜D œGÐ:Ð:Ð:Ð:Ð:Ð:r"   )ÚtablesrÊ   Úbidi_closurerB   r  r   rÍ  rk   ÚformatÚuvsDictrW   r×  r'   r  rä   rY  rC  Úunicodes_missingÚdifference_update)r&   rn   r!  Úadditional_unicodesr  Úmirror_urÉ  ÚvarSelectorr'   rä   r  s    `        @r    ro   ro   ß  sÄ  øø€ à6Ð6˜œÐ6Ñ6Ô6€Fð 	„yÔð 9Ý!™eœeÐØÔ%ð 	2ð 	2ˆAÝ ‘{”{ˆHØÐ#Ø#×'Ò'¨Ñ1Ô1Ð1øØ	Ô×#Ò#Ð$7Ñ8Ô8Ð8ð ð ;ð ;ˆØŒ<˜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    r5   z$prune_pre_subset.<locals>.<listcomp>  s2   € ÐOÐOÐO˜Q°·²±´ÐOÀ!Ç*Â*Á,Ä,ÐO�qÐOÐOÐOr"   c                ó:   — g | ]}|                      ¦   «         °|‘ŒS r   )r,  rÿ  s     r    r5   z$prune_pre_subset.<locals>.<listcomp>  s%   € ÐBÐBÐB˜Q°Q·Z²Z±\´\ÐB�qÐBÐBÐBr"   c                ó(   — g | ]}|j         d k    ¯|‘ŒS )r   )r#  rÿ  s     r    r5   z$prune_pre_subset.<locals>.<listcomp>
  s   € Ð;Ð;Ð;˜¨Q¬X¸ª]¨]�1¨]¨]¨]r"   T)Úlegacy_cmapr!  Úsymbol_cmapr7   ÚnumSubTablesrE  s      r    rÕ  rÕ    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    r5   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>"  sF   ø€ ð ð ð á˜˜1Ø˜AÔ.Ð.Ð.°!°qÔ7KÐ2KÐ2Kð ˜�Fà2KÐ2KÐ2Kr"   r  )r   rU   r4   rn   s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>!  s_   ø€ ð ð ð ñ �A�qØ˜Ô,Ð,Ð,ð ð ð ð ð à !ðñ ô ð -Ð,Ð,r"   c                ó   — i | ]
\  }}|¯||“ŒS r   r   )r   rU   r4   s      r    r.   z!subset_glyphs.<locals>.<dictcomp>*  s#   € ÐAÐAÐA¡$ ! Q¸qÐA˜˜AÐAÐAÐAr"   c                ó@   •— i | ]\  }}|‰j         v s	|‰j        v ¯||“ŒS r   r5  r  s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>,  sD   ø€ ð ð ð á�A�qØ˜Ô*Ð*Ð*¨a°1Ô3GÐ.GÐ.Gð �1à.GÐ.GÐ.Gr"   é   rÛ  c                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   )r6  r  s      €r    r.   z!subset_glyphs.<locals>.<dictcomp>6  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    r5   z!subset_glyphs.<locals>.<listcomp>J  s-   € ÐWÐWÐW˜¸¼ÀBº¸¨a¬f¸¸ÈAÌI¸�1¸¸¸r"   T)r'   r!  Ú
platformIDÚ	platEncIDÚlanguager#  r$  rW   r  r  ÚmaxrY  rl  r	  r7   r1  )r&   rn   Útables_format12_bmpÚtable_plat0_enc3Útable_plat3_enc1r   s    `    r    rv   rv     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ÚsignatureRecordsrE  s      r    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ÚmaxSizeOfInstructionsrE  s      r    rÕ  rÕ  Z  sU   € àŒ?ð +ØÔ 
Ò*Ð*ØˆDŒMØ%&ˆDÔ"ØˆDŒOØ#$ˆDÔ Ø&'ˆDÔ#Ø$%ˆDÔ!Ø)*ˆDÔ&Øˆ4r"   >   r›   r¬   r­   r´  é   é   é   é   r¹   c                óP  ‡‡— 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         	                    t          ¦  «        }|rt          ||¦  «         | 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   rŒ  s     r    r  z$prune_post_subset.<locals>.<setcomp>q  s!   € ÐCÐCÐC °A´H¸s²N°N�A”H°N°N°Nr"   c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   rX  )r   rŒ  ÚnameIDss     €r    r5   z%prune_post_subset.<locals>.<listcomp>r  s%   ø€ Ð?Ð?Ð?˜¨1¬8°wÐ+>Ð+>�!Ð+>Ð+>Ð+>r"   c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   r  rZ  s     r    r5   z%prune_post_subset.<locals>.<listcomp>v  s%   € Ð=Ð=Ð=˜A¨q¯{ª{©}¬}Ð=�aÐ=Ð=Ð=r"   c                ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚlangIDÚname_languages)r   rŒ  rÊ   s     €r    r5   z%prune_post_subset.<locals>.<listcomp>z  s(   ø€ ÐRÐRÐR˜A¨q¬x¸7Ô;QÐ/QÐ/Q�aÐ/QÐ/QÐ/Qr"   )r›   r´  z.Ú	utf_16_be)r¬   rQ  úr­   rQ  )rR  rS  rT  T)r   ÚvisitrB   Úname_IDsÚseenrŽ  Úname_legacyr`  Úobfuscate_namesrä   ÚNAME_IDS_TO_OBFUSCATEÚ_remap_select_name_idsrY  r  ÚencodeÚstringrl  )r&   r(   rÊ   ÚvisitorÚnamerecsÚneedRemappingrŒ  r\  s     `    @r    rË   rË   k  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ˆŒ
ØÔð Øˆð  œ×1Ò1Õ2GÑHÔHˆØð 	8Ý" 4¨Ñ7Ô7Ð7Ø”ð 		ð 		ˆAØŒx˜6Ð!Ð!Ø:;¿+º+¹-¼-ÐT˜7Ÿ>š>¨+Ñ6Ô6Ð6ÈW�”�Ø”˜VÐ#Ð#Ø9:¿º¹¼ÐR˜6Ÿ=š=¨Ñ5Ô5Ð5ÈF�”�Ø”˜Q’�Ø�”�Ø”˜\Ð)Ð)ØØ�OŠO˜AÑÔÐÐØˆŒ
Øˆ4r"   r(   úttLib.TTFontrn  úset[int]ÚreturnÚNonec                óš  — d| vrd| vrdS | d         }d„ |j         D ¦   «         }i }|                     ¦   «         dz
  }|D ]/}|dz  }||vs
J d¦   «         ‚|dk    rt          d	¦  «        ‚|||<   Œ0g }|j         D ]S}|j        |vrŒt	          |j        ||j                 |j        |j        |j        ¦  «        }	| 	                    |	¦  «         ŒT|j          
                    |¦  «         |                      d¦  «        }
|
�}|
j        D ]'}|                     |j        |j        ¦  «        |_        Œ(|
j        D ]F}|j        }|                     ||¦  «        |_        |j        }|                     ||¦  «        |_        ŒG|                      d¦  «        }|€dS |j        j        }|                     ||¦  «        |j        _        |j        j        r9|j        j        j        D ]'}|                     |j        |j        ¦  «        |_        Œ(|j        j        r9|j        j        j        D ])}|                     |j        |j        ¦  «        |_        Œ(dS dS )
a;  Remap a set of IDs so that the originals can be safely scrambled or
    dropped.

    For each name record whose name id is in the `needRemapping` set, make a copy
    and allocate a new unused name id in the font-specific range (> 255).

    Finally update references to these in the `fvar` and `STAT` tables.
    ÚfvarÚSTATNr¹   c                ó   — h | ]	}|j         ’Œ
S r   rX  )r   rº  s     r    r  z)_remap_select_name_ids.<locals>.<setcomp>   s   € Ð:Ð:Ð: V�6”=Ð:Ð:Ð:r"   r›   z#_findUnusedNameID did not skip gapsiÿ  z8Ran out of name IDs while trying to remap existing ones.)rŽ  Ú_findUnusedNameIDÚ
ValueErrorrY  r   rk  r<  r=  r_  rl  r-  r  ÚaxesÚ
axisNameIDÚ	instancesÚsubfamilyNameIDÚpostscriptNameIDrÉ  ÚElidedFallbackNameIDÚDesignAxisRecordÚAxisÚ
AxisNameIDÚAxisValueArrayÚ	AxisValueÚValueNameID)r(   rn  r¹   ÚexistingIdsÚ	remappingÚnextIdÚnameIdÚcopiedRecordsrº  Ú
recordCopyrt  ÚaxisÚinstancerY  ÚstatÚelidedNameIDÚvalues                    r    ri  ri  �  s¬  € ð �TÐÐ˜f¨DÐ0Ð0Øˆà�Œ<€Dð ;Ð:¨t¬zÐ:Ñ:Ô:€KØ€IØ×#Ò#Ñ%Ô%¨Ñ)€FØð #ð #ˆØ�!‰ˆØ˜[Ð(Ð(Ð(Ð*OÑ(Ô(Ð(Ø�EŠ>ˆ>ÝÐWÑXÔXÐXØ"ˆ	�&ÑÐð €MØ”*ð 
)ð 
)ˆØŒ= Ð-Ð-ØÝØŒMØ�f”mÔ$ØÔØÔØŒMñ
ô 
ˆ
ð 	×Ò˜ZÑ(Ô(Ð(Ð(Ø„J×Ò�mÑ$Ô$Ð$ð
 �8Š8�FÑÔ€DØÐØ”Ið 	Nð 	NˆDØ'Ÿmšm¨D¬O¸T¼_ÑMÔMˆDŒOˆOØœð 	Fð 	FˆHØÔ-ˆFØ'0§}¢}°V¸VÑ'DÔ'DˆHÔ$ØÔ.ˆFØ(1¯ª°f¸fÑ(EÔ(EˆHÔ%Ð%à�8Š8�FÑÔ€DØ€|ØˆØ”:Ô2€LØ&/§m¢m°LÀ,Ñ&OÔ&O€D„JÔ#Ø„zÔ"ð NØ”JÔ/Ô4ð 	Nð 	NˆDØ'Ÿmšm¨D¬O¸T¼_ÑMÔMˆDŒOˆOØ„zÔ ð TØ”ZÔ.Ô8ð 	Tð 	TˆEØ )§¢¨eÔ.?ÀÔARÑ SÔ SˆEÔÐðTð Tð	Tð 	Tr"   Úheadc                ó   — dS rû   r   rE  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    ÚUnknownOptionErrorrš  í  r˜  r"   r›  )ÚJSTFrC  r”  r‰  ÚEBSCÚPCLTÚLTSH)ÚFeatÚGlatÚGlocÚSilfÚSill)ÚavarÚBASErt  Úgaspr�  ÚhhearG  ÚvheaúOS/2Úlocar¹   ÚcvtÚfpgmÚprepÚVDMXrC  r˜  ÚMVARÚcvarru  )r¬  r±  r­  r®  r  r¯  )Ú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ÚrtlrÉ  Ú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| _,        d| _-         | j.        di |¤Ž d S )NFTr   )r   r›   r¬   r­   r´  é   rQ  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Ç   ra  r/  r0  rd  rf  r`  rg  rD  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"  rB   )r&   Úkwargss     r    r¬  zOptions.__init__K  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')rW   r²  r›  rù   )r&   r!  r»  rU   s       r    rB   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 '='ú,ú rQ  c                ód   — g | ]-}t          |¦  «        r|d          dv rt          |d ¦  «        n|‘Œ.S )r   Ú
0123456789)r7   rÈ   rg  s     r    r5   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Ÿ  rl  Úfindrž  Úreplacer²  r›  r¶   Úprintr5  rt   rÈ   Ústrr`   r—  r¼  r-  r×  rù   )r&   ÚargvÚignore_unknownÚposargsÚpassthru_optionsr  Úorig_ar2   Úopr»  rU   ÚokÚovÚvvrh  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—  r›  r  r  r  Ú_layout_features_groupsr   r  Úiterra   r  r¬  rB   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ñ ô  Ðð2ð 2ð 2ðh ð  ð  ð /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    ÚSubsettingErrorrA  Ô  r˜  r"   rB  c                  ó   — e Zd ZdS )ú&Subsetter.MissingGlyphsSubsettingErrorNr–  r   r"   r    ÚMissingGlyphsSubsettingErrorrD  ×  r˜  r"   rE  c                  ó   — e Zd ZdS )ú(Subsetter.MissingUnicodesSubsettingErrorNr–  r   r"   r    ÚMissingUnicodesSubsettingErrorrG  Ú  r˜  r"   rH  Nc                ó¦   — |st          ¦   «         }|| _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d S r   )r“  rÊ   rB   r  Úglyph_names_requestedÚglyph_ids_requested)r&   rÊ   s     r    r¬  zSubsetter.__init__Ý  sD   € Øð 	 Ý‘i”iˆGàˆŒÝ"%¡%¤%ˆÔÝ%(¡U¤UˆÔ"Ý#&¡5¤5ˆÔ Ð Ð r"   rQ  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  rk   r5  ÚbytesÚdecoderj  r7   rû  rü  rÍ  rJ  rK  )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   r6   ©r   r2   Ú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   r6   rd  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    r5   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 afterrž  zclose glyph list over 'GSUB'z0Closing glyph list over 'GSUB': %d glyphs beforez.Closed glyph list over 'GSUB': %d glyphs after)rx  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   )r7  )r   r   rl  r&   s     €€r    r  z,Subsetter._closure_glyphs.<locals>.<setcomp>   s5   ø€ ð #ð #ð #àØ˜”8˜tÔ7Ò7Ð7ð à7Ð7Ð7r"   c                ó"   •— i | ]}|‰|         “ŒS r   r   rk  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_retainedrR   s     €r    r5   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   )Ú
getGlyphIDr7  )r   r   r(   r&   s     €€r    r5   z-Subsetter._closure_glyphs.<locals>.<listcomp>«  s9   ø€ ð ð ð Ø¨$¯/ª/¸!Ñ*<Ô*<ÀÔ@XÒ*XÐ*X�Ð*XÐ*XÐ*Xr"   c                ó.   •— i | ]}‰‰|                  |“ŒS r   r   )r   r2   Únew_glyph_orderrl  s     €€r    r.   z-Subsetter._closure_glyphs.<locals>.<dictcomp>³  s2   ø€ ð  
ð  
ð  
Ø-.ˆE�/ !Ô$Ô% qð 
ð  
ð  
r"   zRetaining %d glyphs)2rB   ÚgetGlyphOrderÚorig_glyph_orderr6  rk   rJ  rK  Úglyphs_missingÚ
differencer\  r#   rÊ   r  rE  rC  r'   r%  r]  ro   Úintersection_updaterÈ  Úglyphs_cmapedr  rH  r-  rÍ  ÚgetGlyphNamer  rÎ  Úminr7   rñ  r
  r¦  rù   ÚlowerÚglyphs_glyfedÚglyphs_cffedrp  r%   rB  r?  ra   r7  r5  r	  rD  r6  rt  Úglyph_index_map)	r&   r(   Ú
realGlyphsÚmissingr2   rÉ  re  rt  rl  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 neededrv   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  rZ  r   r¨  r[  rÊ   r  r\  r#   r²  r]  rp  r'   rv   r  ÚwarningÚsetGlyphOrderrt  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¹   Ú
GlyphOrderrª  T)Ú	pruneOnlyz%s Unicode ranges pruned: %sr›   z%s CodePage ranges pruned: %sz%s xAvgCharWidth updated: %dz%s usMaxContext updated: %drË   rW  rX  rY  )rY  r×  rl  rÊ   r  ÚgetUnicodeRangesÚrecalcUnicodeRangesr\  r#   r$   r  r}  Ú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¤  rž  rt  r¥  r*  r¹   ró  c                ó    — i | ]\  }}||d z   “ŒS )r›   r   )r   r2   r   s      r    r.   z*Subsetter._sort_tables.<locals>.<dictcomp>  s"   € Ð=Ð=Ð=¡  A�A�q˜1‘uÐ=Ð=Ð=r"   c                ó0   •— ‰                      | d¦  «        S r‰  )r  )rÀ  ÚtagOrders    €r    rV  z(Subsetter._sort_tables.<locals>.<lambda>  s   ø€ °8·<²<ÀÀQÑ3GÔ3G€ r"   )r	  c                ó   — g | ]
}|d k    ¯|‘ŒS )r‰  r   rÿ  s     r    r5   z*Subsetter._sort_tables.<locals>.<listcomp>  s"   € Ð5Ð5Ð5�a 1¨Ò#4Ð#4�Ð#4Ð#4Ð#4r"   )r<   r$   rY  )r&   r(   r¿  rž  s      @r    rZ  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   )ra  rƒ  r‡  rš  )r&   r(   s     r    rG   zSubsetter.subset  sX   € Ø×Ò˜tÑ$Ô$Ð$Ø×Ò˜TÑ"Ô"Ð"Ø×Ò˜DÑ!Ô!Ð!Ø×Ò Ñ%Ô%Ð%Ð%Ð%r"   r   )r�  r­  r®  r;  rB  rE  rH  r¬  rU  ra  rƒ  r‡  rš  rZ  rG   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_0rb  )	ÚfontFilerÊ   r¢  ÚdontLoadGlyphNamesr   r(   r^  Úsavedr>  s	            r    Ú	load_fontr¬    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.ttLibr¯  Ú
USE_ZOPFLIr  Úcfgr   Úsaver  )r(   ÚoutfilerÊ   r¯  s       r    Ú	save_fontr¶  6  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›   rR  )Úrer}   r¼  r7   rl  rÈ   r-  rÎ  )rn   r¸  r4   ÚitemÚfieldsÚstartÚends          r    Úparse_unicodesr½  A  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¼  r7   rl  rÈ   r-  rÎ  )rn   r4   r¹  rº  s       r    Ú
parse_gidsr¿  Q  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¼  )rn   s    r    Úparse_glyphsrÁ  \  s"   € Ø�9Š9�S˜#ÑÔ×$Ò$Ñ&Ô&Ð&r"   c                 ó~   — t          dt          t          j        ¬¦  «         t          dt          j        ¬¦  «         d S )Nzusage:©Úfilez2Try fonttools subset --help for more information.
)r/  Ú	__usage__ÚsysÚstderrr   r"   r    ÚusagerÈ  `  s5   € Ý	ˆ(•I¥C¤JÐ/Ñ/Ô/Ð/Ý	Ð
?ÅcÄjÐQÑQÔQÐQÐQÐQr"   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)	rP  z	gids-filer'   zglyphs-filerR  z	text-filerQ  zunicodes-filezoutput-file)r2  zERROR:rÃ  r¬   )ÚlevelT)rÊ   FrQ  r   z--output-file=r  z--text=é   z--text-file=r9  z	utf-8-sig)Úencodingú
z--unicodes=é   z--unicodes-file=rR  ú#z--gids=z--gids-file=z	--glyphs=é	   z--glyphs-file=)rª  r   r³  z.subset)Ú	extensionÚ	overWriteÚsuffixzcompile glyph listr  z
Text: '%s'zUnicodes: %sz
Glyphs: %szGids: %s)r'   rP  rQ  rR  zInput font:% 7d bytes: %szSubset font:% 7d bytes: %s)=Úos.pathrÊ  Ú	fontToolsrË  rÆ  r1  r/  Ú__doc__r“  r:  r—  rÈ  rÇ  r7   r  ÚloggingÚINFOÚWARNINGr  r]  r*   ÚsetLevelÚDEBUGÚdisabledr?  rŸ  ÚopenÚreadr.  r-  r½  Ú	readlinesr¼  r¿  rÁ  rl  ra  r   r¬  r  r}  r   ru  r!  r  r  rY  r#  r$  r\  r#   rU  rG   r¶  ÚosÚpathÚgetsizer  ÚsaveXMLÚstdoutÚclose)ÚargsrÊ  rË  rÊ   ÚeÚfontfileÚ	subsetterrµ  r'   rP  rQ  Úwildcard_glyphsÚwildcard_unicodesrR  r   r>  Úlinerª  r   r(   Úextr   râ  s                          r    Úmainrð  e  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 {Ð3Ñ3Ô3ð 3°qØ˜Ÿš™œ×(Ò(¨¨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?  r¬  r¶  r¿  rÁ  r½  rð  r   )FT)F)T)r(   ro  rn  rp  rq  rr  )r   FT)ˆÚ
__future__r   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   r   ÚfontTools.unicodedatar   rÆ  rû  ÚarrayrÙ  Úcollectionsr   r   Ú	functoolsr   Útypesr   rÅ  rØ  Ú	getLoggerr\  r)   r'   r]  r/   r9   r¡   r>   rC   rG   rM   ry  r\   ÚSingleSubstro   rv   ÚMultipleSubstÚAlternateSubstÚLigatureSubstÚReverseChainSingleSubstÚDevicer°   ÚValueRecordrº   Ú	SinglePosrË   ÚPairPosÚ
CursivePosÚAnchorÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosrA  rC  ÚContextSubstÚChainContextSubstÚ
ContextPosÚChainContextPosrG  rµ  ÚExtensionSubstÚExtensionPosrË  rÊ  r)  r0  r<  r¢  rF  rM  r   r\  rq  rp  rm  r}  r¡  r¨  r©  r­  r±  rÃ  rÅ  rÕ  rÙ  r÷  r;  rw  ÚMathGlyphConstructionrÜ  ré  rê  rë  rò  r  rq  r  rh  ri  r±  r“  r?  r¬  r¶  r½  r¿  rÁ  rÈ  rð  Ú__all__r   r"   r    ú<module>r     s²  ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 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Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ *Ð *Ð *Ð *Ð *Ð *Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àG€	ðð ñð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ðN €ˆXÔ!Ñ"Ô"ð	ð 	ñ #Ô"ð	ð €ˆXÔ Ñ!Ô!ð.5ð .5ñ "Ô!ð.5ðb €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ!Ñ"Ô"ð$5ð $5ñ #Ô"ð$5ðN €ˆ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Ô.Ñ/Ô/ð	(ð 	(ñ 0Ô/ð	(ð €ˆXÔ'Ñ(Ô(ð,ð ,ñ )Ô(ð,ð" €ˆXÔ'Ñ(Ô(ð,ð ,ñ )Ô(ð,ð" €ˆXÔ$ hÔ&6Ñ7Ô7ðDð Dñ 8Ô7ðDð €ˆXÔ$ hÔ&6Ñ7Ô7ðDð Dñ 8Ô7ðDð €ˆXÔ$ hÔ&6Ñ7Ô7ð'ð 'ñ 8Ô7ð'ð €ˆXŒ_ÑÔð:ð :ð :ñ Ôð:ð €ˆXŒ_ÑÔð:ð :ð :ñ Ôð:ð €ˆXŒ_ÑÔð0ð 0ñ Ôð0ð €ˆXÔ Ñ!Ô!ð	"ð 	"ñ "Ô!ð	"ð €ˆ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ð+3ð +3ñ GÔFð+3ð\ €Ð ˆ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ðB €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
ð 
ñ *Ô)ð
ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð?ð ?ñ *Ô)ð?ðD €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
ð 
ñ *Ô)ð
ð 4Ð3Ð3Ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ðHCTð CTð CTð CTðL €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð$g*ð g*ð g*ð g*ð g*ˆfñ g*ô g*ð g*ðT@&ð @&ð @&ð @&ð @&�ñ @&ô @&ð @&ðF
 €€{ÑÔðð ð ñ Ôðð> €ÐÑÔð>ð >ñ  Ôð>ðð ð ð ð ð ð'ð 'ð 'ðRð Rð Rð
 €Ð.Ñ/Ô/ðNð Nð Nñ 0Ô/ðNðb	ð 	ð 	€€€r"   