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

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

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

Usage: a³9  

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

Args:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Examples::

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--hinting
  Keep hinting [default]

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

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

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

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

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

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

  Examples:

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

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

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

  --drop-tables=
      * Keep all tables.

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

  Example:

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

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

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

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

  Examples:

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

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

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

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

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

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

  Examples:

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

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

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

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

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

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

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

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

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

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

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

Example
^^^^^^^

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

  $ pyftsubset font.ttf --unicodes="U+0020-0025" \
    --layout-features=* --glyph-names --symbol-cmap --legacy-cmap \
    --notdef-glyph --notdef-outline --recommended-glyphs \
    --name-IDs=* --name-legacy --name-languages=*
zfontTools.subsetc                 óª   ‡— | j                  dt        |«      «       |r5|j                  «       Š| j                  dt        ˆfd„|D «       «      «       y y )NzGlyph names: %szGlyph IDs:   %sc              3   ó(   •K  — | ]	  }‰|   –— Œ y ­w©N© )Ú.0ÚgÚreverseGlyphMaps     €úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/subset/__init__.pyú	<genexpr>z_log_glyphs.<locals>.<genexpr>Ì  s   øè ø€ Ò+OÀ1¨O¸AÕ,>Ñ+Oùó   ƒ)ÚinfoÚsortedÚgetReverseGlyphMap)ÚselfÚglyphsÚfontr   s      @r   Ú_log_glyphsr&   È  sF   ø€ Ø‡I�IÐ¤¨£Ô0ÙØ×1Ñ1Ó3ˆØ�	‰	Ð#¤VÓ+OÈÔ+OÓ%OÕPð ó    zfontTools.subset.timer)Úloggerc                 ó4   — |D �ci c]  }|| |   “Œ
 c}S c c}w r   r   )Údr$   r   s      r   Ú_dict_subsetr+   ×  s   € Ø#Ö$˜ˆAˆq�‰t‰GÒ$Ð$ùÒ$s   …c                 óT   — t        | «      }|D �cg c]  }||k  sŒ	| |   ‘Œ c}S c c}w r   ©Úlen)ÚlÚindicesÚcountÚis       r   Ú_list_subsetr3   Û  s)   € Ü�‹F€EØ!Ö/�Q Q¨£YˆAˆa‹DÒ/Ð/ùÒ/s   �
%›%c                 óh   — t        | j                  «      D ��cg c]  \  }}||v sŒ|‘Œ c}}S c c}}w )z3Returns ascending list of matching coverage values.)Ú	enumerater$   )r#   r$   r2   r   s       r   Ú	intersectr6   à  s+   € ô $ D§K¡KÓ0×@‘$�!�Q°A¸²KŠAÓ@Ð@ùÓ@s   ™.¦.c                 ó@   ‡— t        ˆfd„| j                  D «       «      S )z#Returns set of intersecting glyphs.c              3   ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wr   r   )r   r   r$   s     €r   r   z#intersect_glyphs.<locals>.<genexpr>é  s   øè ø€ Ò5�Q¨¨fªŒqÑ5ùs   ƒ	�)Úsetr$   )r#   r$   s    `r   Úintersect_glyphsr:   æ  s   ø€ ô Ó5˜$Ÿ+™+Ô5Ó5Ð5r'   c                 óz   — | j                  |«      }| j                  D �cg c]	  }||v sŒ|‘Œ c}| _        |S c c}w )z4Returns ascending list of remaining coverage values.©r6   r$   )r#   r$   r0   r   s       r   Úsubsetr=   ì  s8   € ð �n‰n˜VÓ$€GØ"Ÿk™kÖ9˜¨Q°&ª[’1Ò9€D„KØ€Nùò :s    	8ª8c                 óR   — |D �cg c]  }| j                   |   ‘Œ c}| _         yc c}w )zRemaps coverage.N©r$   )r#   Úcoverage_mapr2   s      r   ÚremaprA   ô  s!   € ð ,8Ö8 a�4—;‘;˜q“>Ò8€D…KùÒ8s   …$c           	      óº   ‡ — t        t        ˆ fd„|D «       «      rdgng ‰ j                  j                  «       D ��cg c]  \  }}||v sŒ|‘Œ c}}z   «      S c c}}w )z0Returns ascending list of matching class values.c              3   ó:   •K  — | ]  }|‰j                   v–— Œ y ­wr   ©Ú	classDefs©r   r   r#   s     €r   r   zintersect.<locals>.<genexpr>þ  s   øè ø€ Ò<°�A˜TŸ^™^Ô+Ñ<ùó   ƒr   )r   ÚanyrE   Úitems)r#   r$   r   Úvs   `   r   r6   r6   ú  sT   ø€ ô ÜÓ<°VÔ<Ô<ˆ!‰À"ØŸ™×-Ñ-Ó/×
?‘��A°1¸²;Š1Ó
?ñ	@óð ùã
?s   ¼AÁ	Ac                 ó”   ‡ ‡‡— ‰dk(  rt        ˆ fd„‰D «       «      S t        ˆˆfd„‰ j                  j                  «       D «       «      S )z%Returns set of glyphs matching class.r   c              3   ó@   •K  — | ]  }|‰j                   vsŒ|–— Œ y ­wr   rD   rF   s     €r   r   z"intersect_class.<locals>.<genexpr>  s   øè ø€ Ò@˜¨°·±Ò(?”1Ñ@ùó   ƒ—c              3   ó>   •K  — | ]  \  }}|‰k(  sŒ|‰v sŒ|–— Œ y ­wr   r   )r   r   rJ   r$   Úklasss      €€r   r   z"intersect_class.<locals>.<genexpr>  s!   øè ø€ ÒR‘T�Q˜°q¸E³zÀaÈ6ÂkŒqÑRùs   ƒ‘–)r9   rE   rI   )r#   r$   rO   s   ```r   Úintersect_classrP     s;   ú€ ð �‚zÜÓ@˜fÔ@Ó@Ð@ÜÔR˜TŸ^™^×1Ñ1Ó3ÔRÓRÐRr'   c                 ó:  ‡ — ‰ j                   j                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}‰ _         t        |rt        ˆ fd„|D «       «      rdgng t	        ‰ j                   j                  «       «      z   «      }|r‰ j                  |«       |S c c}}w )z,Returns ascending list of remaining classes.c              3   ó:   •K  — | ]  }|‰j                   v–— Œ y ­wr   rD   rF   s     €r   r   zsubset.<locals>.<genexpr>  s   øè ø€ Ò&OÀ1 q°·±Ô'>Ñ&OùrG   r   )rE   rI   r   rH   ÚlistÚvaluesrA   )r#   r$   rA   Ú	useClass0r   rJ   r0   s   `      r   r=   r=     s�   ø€ ð (,§~¡~×';Ñ';Ó'=×M™t˜q !ÀÀfÂ�a˜‘dÓM€D„Nô ñ ¤3Ó&OÈÔ&OÔ#Oð ‰Càä
ˆt�~‰~×$Ñ$Ó&Ó
'ñ	(ó€Gñ Ø�
‰
�7ÔØ€Nùó Ns
   ŸB¬Bc                 ó”   — | j                   j                  «       D ��ci c]  \  }}||j                  |«      “Œ c}}| _         yc c}}w )zRemaps classes.N)rE   rI   Úindex)r#   Ú	class_mapr   rJ   s       r   rA   rA     s8   € ð 9=¿¹×8LÑ8LÓ8N×O±°°1�a˜Ÿ™¨Ó+Ñ+ÓO€D…NùÓOs   žAc                 ó~   ‡— |j                   j                  ˆfd„| j                  j                  «       D «       «       y )Nc              3   ó2   •K  — | ]  \  }}|‰v sŒ|–— Œ y ­wr   r   )r   r   rJ   Ú
cur_glyphss      €r   r   z!closure_glyphs.<locals>.<genexpr>'  s   øè ø€ ÒJ™$˜!˜Q¸!¸zº/”AÑJùó   ƒ�)r$   ÚupdateÚmappingrI   ©r#   Úsr[   s     `r   Úclosure_glyphsra   %  s&   ø€ à‡H�H‡O�OÓJ $§,¡,×"4Ñ"4Ó"6ÔJÕJr'   c                 óÚ   — | j                   j                  «       D ��ci c]&  \  }}||j                  v sŒ||j                  v sŒ$||“Œ( c}}| _         t        | j                   «      S c c}}w r   )r^   rI   r$   Úbool©r#   r`   r   rJ   s       r   Úsubset_glyphsre   *  sZ   € ð Ÿ™×+Ñ+Ó-÷Ù��A°°a·h±h²À1ÈÏÉÂ=ˆˆ1‰ó€D„Lô �—‘ÓÐùós   žA'µA'ÁA'c                 óˆ   — | j                   j                  «       D ]%  \  }}||v sŒ|j                  j                  |«       Œ' y r   )r^   rI   r$   r]   )r#   r`   r[   ÚglyphÚsubsts        r   ra   ra   2  s:   € àŸ™×*Ñ*Ó,ò #‰ˆˆuØ�JÒØ�H‰H�O‰O˜EÕ"ñ#r'   c                 óä   ‡— | j                   j                  «       D ��ci c]*  \  }}|‰j                  v rt        ˆfd„|D «       «      r||“Œ, c}}| _         t	        | j                   «      S c c}}w )Nc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   r?   )r   Úsubr`   s     €r   r   z subset_glyphs.<locals>.<genexpr>>  s   øè ø€ Ò >°S ¨¯©¤Ñ >ùrG   )r^   rI   r$   Úallrc   rd   s    `  r   re   re   9  sb   ø€ ð —L‘L×&Ñ&Ó(÷áˆAˆqØ�—‘‰=œSÓ >¸AÔ >Ô>ð 	
ˆ1‰ó€D„Lô
 �—‘ÓÐùós   Ÿ/A,c                 óz   ‡—  |j                   j                  ˆfd„| j                  j                  «       D «       Ž  y )Nc              3   ó2   •K  — | ]  \  }}|‰v sŒ|–— Œ y ­wr   r   )r   r   Úvlistr[   s      €r   r   z!closure_glyphs.<locals>.<genexpr>E  s   øè ø€ ÒW¡  5ÀqÈJÂ”eÑWùr\   )r$   r]   Ú
alternatesrI   r_   s     `r   ra   ra   C  s(   ø€ à€A‡H�H‡O�OÓW¨D¯O©O×,AÑ,AÓ,CÔWÒXr'   c                 ó.  ‡— | j                   j                  «       D ���ci c]G  \  }}|‰j                  v r4t        ˆfd„|D «       «      r ||D �cg c]  }|‰j                  v sŒ|‘Œ c}“ŒI c}}}| _         t	        | j                   «      S c c}w c c}}}w )Nc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   r?   )r   rJ   r`   s     €r   r   z subset_glyphs.<locals>.<genexpr>M  s   øè ø€ Ò >°1  a§h¡h¤Ñ >ùrG   )rp   rI   r$   rH   rc   )r#   r`   r   ro   rJ   s    `   r   re   re   H  s‚   ø€ ð Ÿ™×-Ñ-Ó/÷ð áˆAˆuØ�—‘‰=œSÓ >¸Ô >Ô>ð 	
�uÖ.�!  Q§X¡X¢ŠAÒ.Ñ.ô€D„Oô
 �—‘Ó Ð ùò	 /ùôs    /BÁBÁ#BÁ'BÂBc                 ó~   ‡‡—  ‰j                   j                  ˆˆfd„| j                  j                  «       D «       Ž  y )Nc              3   ó¨   •K  — | ]D  \  }}|‰v r;|D �cg c]-  }t        ˆfd „|j                  D «       «      sŒ"|j                  ‘Œ/ c}–— ŒF yc c}w ­w)c              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   r?   ©r   Úcr`   s     €r   r   z+closure_glyphs.<locals>.<genexpr>.<genexpr>V  s   øè ø€ Ò0VÀ1°°a·h±h´Ñ0VùrG   N)rl   Ú	ComponentÚLigGlyph)r   r   ÚseqsÚseqr[   r`   s       €€r   r   z!closure_glyphs.<locals>.<genexpr>U  sG   øè ø€ ò 

á��4Ø�J‰ð &*ÖW˜c¬SÓ0VÈÏÉÔ0VÕ-VˆS�\‹\ÖWñ

ùÚWùs   ƒA“#A·AÁA)r$   r]   Ú	ligaturesrI   r_   s    ``r   ra   ra   R  s/   ù€ à€A‡H�H‡O�Oô

àŸ>™>×/Ñ/Ó1ô

òr'   c                 ó@  ‡— | j                   j                  «       D ��ci c]  \  }}|‰j                  v sŒ||“Œ c}}| _         | j                   j                  «       D ���ci c]L  \  }}||D �cg c]:  }|j                  ‰j                  v r t	        ˆfd„|j
                  D «       «      r|‘Œ< c}“ŒN c}}}| _         | j                   j                  «       D ��ci c]  \  }}|sŒ	||“Œ c}}| _         t        | j                   «      S c c}}w c c}w c c}}}w c c}}w )Nc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   r?   rv   s     €r   r   z subset_glyphs.<locals>.<genexpr>d  s   øè ø€ Ò/UÀ!°°Q·X±X´Ñ/UùrG   )r|   rI   r$   ry   rl   rx   rc   )r#   r`   r   rJ   rz   r{   s    `    r   re   re   ]  sô   ø€ à'+§~¡~×';Ñ';Ó'=×O™t˜q !ÀÀaÇhÁhÂ�a˜‘dÓO€D„Nð —~‘~×+Ñ+Ó-÷ð ñ ˆAˆtð 	
àö
àØ�|‰|˜qŸx™xÑ'¬CÓ/UÀsÇ}Á}Ô/UÔ,Uò ò
ñ 	
ô€D„Nð (,§~¡~×';Ñ';Ó'=×C™t˜q !Â�a˜‘dÓC€D„NÜ�—‘ÓÐùó Pùò
ùôùó Ds.   ŸD¶DÁ"DÁ/?DÂ.DÃ
DÃ%DÄDc                 ó(  ‡ ‡— ‰ j                   dk(  rn‰ j                  j                  |«      }|r+t        ˆfd„‰ j                  ‰ j
                  z   D «       «      sy ‰j                  j                  ˆ fd„|D «       «       y J d‰ j                   z  «       ‚)Né   c              3   óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wr   r<   rv   s     €r   r   z!closure_glyphs.<locals>.<genexpr>p  s&   øè ø€ ò "
àð �K‰K˜Ÿ™×!ñ"
ùó   ƒ%(c              3   ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr   )Ú
Substitute©r   r2   r#   s     €r   r   z!closure_glyphs.<locals>.<genexpr>u  s   øè ø€ Ò<¨q˜Ÿ™¨Õ*Ñ<ùs   ƒúunknown format: %s)ÚFormatÚCoverager6   rl   ÚLookAheadCoverageÚBacktrackCoverager$   r]   )r#   r`   r[   r0   s   ``  r   ra   ra   l  sz   ù€ à‡{�{�aÒØ—-‘-×)Ñ)¨*Ó5ˆÙœcó "
à×+Ñ+¨d×.DÑ.DÑDô"
ô 
ð Ø	�‰�‰Ó<°GÔ<Õ<à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 óh  ‡— | j                   dk(  �r| j                  j                  ‰j                  «      }t	        | j
                  |«      | _        t        | j
                  «      D ��cg c]  \  }}|‰j                  v sŒ|‘Œ }}}t	        | j
                  |«      | _        | j                  j                  |«       t        | j
                  «      | _	        t        | j                  xr+ t        ˆfd„| j                  | j                  z   D «       «      «      S J d| j                   z  «       ‚c c}}w )Nr€   c              3   óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wr   ©r=   r$   rv   s     €r   r   z subset_glyphs.<locals>.<genexpr>†  s&   øè ø€ ò àð —‘˜Ÿ™×"ñùr‚   r†   )r‡   rˆ   r=   r$   r3   r„   r5   rA   r.   Ú
GlyphCountrc   rl   r‰   rŠ   )r#   r`   r0   r2   rk   s    `   r   re   re   z  sò   ø€ à‡{�{�aÓØ—-‘-×&Ñ& q§x¡xÓ0ˆÜ& t§¡¸Ó@ˆŒä#,¨T¯_©_Ó#=×Q™˜˜CÀÈÏÉÂ’1ÐQˆÑQÜ& t§¡¸Ó@ˆŒØ�‰×Ñ˜GÔ$Ü˜dŸo™oÓ.ˆŒÜØ�O‰Oò Üó à×/Ñ/°$×2HÑ2HÑHôó ó
ð 	
ð 	5Ð&¨¯©Ñ4Ó4ˆqùó Rs   Á*D.ÂD.c                 ó   — | j                   dv S )N©r€   é   é   )ÚDeltaFormat©r#   s    r   Ú
is_hintingr•   �  s   € à×Ñ˜yÐ(Ð(r'   c                 ól   — dD ]/  }t        | |d «      }|€Œ|j                  «       sŒ$t        | |«       Œ1 y )N)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDevice)Úgetattrr•   Údelattr©r#   ÚnamerJ   s      r   Úprune_hintsrŸ   ”  s6   € àHò  ˆÜ�D˜$ Ó%ˆØ‰=˜QŸ\™\�^Ü�D˜$Õñ r'   c                 óÞ  — | j                   dk(  r.t        | j                  j                  |j                  «      «      S | j                   dk(  r‰| j                  j                  |j                  «      }| j
                  }t        |«      }|D �cg c]  }||k  sŒ	||   ‘Œ c}| _        t        | j
                  «      | _        t        | j                  «      S J d| j                   z  «       ‚c c}w )Nr€   r‘   r†   )r‡   r.   rˆ   r=   r$   ÚValueÚ
ValueCountrc   )r#   r`   r0   rT   r1   r2   s         r   re   re   œ  sµ   € à‡{�{�aÒÜ�4—=‘=×'Ñ'¨¯©Ó1Ó2Ð2Ø	�‰˜Ò	Ø—-‘-×&Ñ& q§x¡xÓ0ˆØ—‘ˆÜ�F“ˆØ)0Ö> A°A¸³I�f˜Q“iÒ>ˆŒ
Ü˜dŸj™j›/ˆŒÜ�D—O‘OÓ$Ð$à4Ð&¨¯©Ñ4Ó4ˆqùò	 ?s   Â
C*ÂC*c                 ó*  ‡ — ‰ j                   €‰ j                  dk(  sJ ‚y‰ j                  dk(  rF|j                  s‰ j                   j	                  «        ‰ j                   j                  «       ‰ _        n¿‰ j                  dk(  r°d ‰ j                   v r/‰ j                  dk(  sJ ‚t        d„ ‰ j                   D «       «      suJ ‚|j                  s!‰ j                   D ]  }|j	                  «        Œ t        t        j                  ‰ j                   D �cg c]  }|j                  «       ‘Œ c}d«      ‰ _        ‰ j                  dk(  rLt        ˆ fd„‰ j                   D «       «      r.d‰ _        ‰ j                  dk7  r‰ j                   d   nd ‰ _         ‰ `
yc c}w )Nr   Tr€   r‘   c              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr   r   ©r   rJ   s     r   r   z$prune_post_subset.<locals>.<genexpr>¹  s   è ø€ Ò5 Q�q˜D”yÑ5ùs   ‚c              3   óB   •K  — | ]  }|‰j                   d    k(  –— Œ y­w©r   N)r¡   )r   rJ   r#   s     €r   r   z$prune_post_subset.<locals>.<genexpr>Ã  s   øè ø€ ÒG°q  T§Z¡Z°¡]Õ 2ÑGùs   ƒ)r¡   ÚValueFormatr‡   ÚhintingrŸ   ÚgetEffectiveFormatrl   r   ÚintÚ__or__r¢   )r#   r%   ÚoptionsrJ   s   `   r   Úprune_post_subsetr®   «  sG  ø€ à‡z�zÐØ×Ñ 1Ò$Ð$Ð$Øð ‡{�{�aÒØ�ŠØ�J‰J×"Ñ"Ô$ØŸ:™:×8Ñ8Ó:ˆÕØ	�‰˜Ò	Ø�4—:‘:ÑØ×#Ñ# qÒ(Ð(Ð(ÜÑ5¨$¯*©*Ô5Ô5Ð5Ð5à—?’?ØŸ™ò $�AØ—M‘M•Oð$ä%Ü—
‘
¸T¿Z¹ZÖH¸˜Q×1Ñ1Õ3ÒHÈ!ó ˆDÔð
 ‡{�{�aÒœCÓG¸D¿J¹JÔGÔGØˆŒØ&*×&6Ñ&6¸!Ò&;�T—Z‘Z ’]ÀˆŒ
ØˆOàùò Is   ÄF
c                 ó6  — | j                   dk(  �rV| j                  j                  |j                  «      }| j                  }t        |«      }|D �cg c]  }||k  sŒ	||   ‘Œ c}| _        | j                  D ]T  }|j                  D �cg c]  }|j                  |j                  v sŒ|‘Œ c}|_        t        |j                  «      |_        ŒV t        | j                  «      D ��cg c]  \  }}|j                  sŒ|‘Œ }}}| j                  j                  |«       t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S | j                   dk(  �rl| j                  j                  |j                  j                  | j                  j                  «      d¬«      D �cg c]  }|| j                   k  r|‘Œ }	}| j"                  j                  |j                  dd¬«      D �cg c]  }|| j$                  k  r|‘Œ }
}|	D �cg c]  }| j&                  |   ‘Œ c}| _        | j&                  D ]$  }|
D �cg c]  }|j(                  |   ‘Œ c}|_        Œ& t        |	«      | _        t        |
«      | _        t        | j                   xr6 | j$                  dkD  xr% | j                  j                  |j                  «      «      S J d| j                   z  «       ‚c c}w c c}w c c}}w c c}w c c}w c c}w c c}w )Nr€   r‘   T©rA   F)rA   rU   r†   )r‡   rˆ   r=   r$   ÚPairSetr.   ÚPairValueRecordÚSecondGlyphÚPairValueCountr5   rA   r3   ÚPairSetCountrc   Ú	ClassDef1ÚintersectionÚClass1CountÚ	ClassDef2ÚClass2CountÚClass1RecordÚClass2Record)r#   r`   r0   Úpairsr1   r2   ÚpÚrrw   Ú
class1_mapÚ
class2_maps              r   re   re   Ë  s·  € à‡{�{�aÓØ—-‘-×&Ñ& q§x¡xÓ0ˆØ—‘ˆÜ�E“
ˆØ*1Ö? Q°Q¸³Y˜˜a›Ò?ˆŒØ—‘ò 	6ˆAà×,Ñ,ö!Ø°·±ÀÇÁÒ0I’ò!ˆAÔô  # 1×#4Ñ#4Ó5ˆAÕð		6ô "+¨4¯<©<Ó!8×M™˜˜A¸A×<LÓ<L’1ÐMˆÑMØ�‰×Ñ˜GÔ$Ü# D§L¡L°'Ó:ˆŒÜ §¡Ó-ˆÔÜ�D×%Ñ%Ó&Ð&Ø	�‰˜Ó	ð —^‘^×*Ñ*Ø—‘×%Ñ% d§m¡m×&:Ñ&:Ó;À4ð +ó ö
àð �4×#Ñ#Ò#ò	 ð
ˆ
ð 
ð —^‘^×*Ñ*¨1¯8©8¸4È5Ð*ÓQö
àØ�4×#Ñ#Ò#ò ð
ˆ
ð 
ð
 <FÖF°a˜T×.Ñ.¨qÓ1ÒFˆÔØ×"Ñ"ò 	EˆAØ9CÖD°A˜aŸn™n¨QÓ/ÒDˆA�Nð	Eä˜z›?ˆÔÜ˜z›?ˆÔäØ×Ñò /Ø×!Ñ! AÑ%ò/à—‘×$Ñ$ Q§X¡XÓ.ó
ð 	
ð 	5Ð&¨¯©Ñ4Ó4ˆqùòK @ùò!ùó
 Nùò
ùò
ùò
 GùâDs<   Á
K7ÁK7ÂK<Â&K<Ã&LÃ;LÇLÈLÈ%LÉLc                 ó6  — |j                   sìdddœ| j                     \  }}dx| _        | _        t	        | |«      D ]º  }t	        ||«      D ]©  }|j
                  rG|j
                  j                  «        | xj                  |j
                  j                  «       z  c_        |j                  sŒc|j                  j                  «        | xj                  |j                  j                  «       z  c_        Œ« Œ¼ t        | j                  | j                  z  «      S )N)r±   r²   )r»   r¼   ©r€   r‘   r   )
r©   r‡   ÚValueFormat1ÚValueFormat2r›   ÚValue1rŸ   rª   ÚValue2rc   )r#   r%   r­   Úattr1Úattr2Úrowr¿   s          r   r®   r®   ù  sò   € à�?Š?à-Ø/ñ
ð �+‰+ñ‰ˆˆuð
 12Ð1ˆÔ˜DÔ-Ü˜4 Ó'ò 	GˆCÜ˜S %Ó(ò G�Ø—8’8Ø—H‘H×(Ñ(Ô*Ø×%Ò%¨¯©×)DÑ)DÓ)FÑFÕ%Ø—8“8Ø—H‘H×(Ñ(Ô*Ø×%Ò%¨¯©×)DÑ)DÓ)FÑFÖ%ñGð	Gô �×!Ñ! D×$5Ñ$5Ñ5Ó6Ð6r'   c                 ód  — | j                   dk(  r‰| j                  j                  |j                  «      }| j                  }t        |«      }|D �cg c]  }||k  sŒ	||   ‘Œ c}| _        t        | j                  «      | _        t        | j                  «      S J d| j                   z  «       ‚c c}w ©Nr€   r†   )r‡   rˆ   r=   r$   ÚEntryExitRecordr.   ÚEntryExitCountrc   )r#   r`   r0   Úrecordsr1   r2   s         r   re   re     s•   € à‡{�{�aÒØ—-‘-×&Ñ& q§x¡xÓ0ˆØ×&Ñ&ˆÜ�G“ˆØ4;ÖI¨q¸qÀ5»y ¨£
ÒIˆÔÜ! $×"6Ñ"6Ó7ˆÔÜ�D×'Ñ'Ó(Ð(à4Ð&¨¯©Ñ4Ó4ˆqùò	  Js   Á
B-ÁB-c                 óþ   — | j                   dk(  rd| _         y | j                   dk(  rWdD ]0  }t        | |d «      }|€Œ|j                  «       sŒ$t        | |d «       Œ2 | j                  €| j
                  €d| _         y y y y )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ð *CÐ$ð 
r'   c                 óØ   — |j                   s^| j                  D ]O  }|j                  r|j                  j                  «        |j                  sŒ6|j                  j                  «        ŒQ y©NT)r©   rÍ   ÚEntryAnchorrŸ   Ú
ExitAnchor)r#   r%   r­   Úrecs       r   r®   r®   (  sQ   € à�?Š?Ø×'Ñ'ò 	-ˆCØ�ŠØ—‘×+Ñ+Ô-Ø�~‹~Ø—‘×*Ñ*Õ,ð		-ð
 r'   c                 ó*  — | j                   dk(  �rð| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        | j                  j                  |j                  «      }t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        t        d„ | j
                  j                  D «       «      }t        |«      | _        | j
                  j                  D ]"  }|j                  |j                   «      |_        Œ$ | j                  j                  D ]  }t	        |j"                  |«      |_        Œ t%        | j                  xr. | j
                  j                  xr | j                  j                  «      S J d| j                   z  «       ‚)Nr€   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   ©ÚClassr¥   s     r   r   z subset_glyphs.<locals>.<genexpr>A  ó   è ø€ Ò"N¨q 1§7¥7Ñ"Nùó   ‚r†   )r‡   ÚMarkCoverager=   r$   r3   Ú	MarkArrayÚ
MarkRecordr.   Ú	MarkCountÚBaseCoverageÚ	BaseArrayÚ
BaseRecordÚ	BaseCountr   Ú
ClassCountrW   rÜ   Ú
BaseAnchorrc   )r#   r`   Úmark_indicesÚbase_indicesÚclass_indicesÚmÚbs          r   re   re   3  s†  € à‡{�{�aÓØ×(Ñ(×/Ñ/°·±Ó9ˆÜ$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô Ø×(Ñ(×/Ñ/°·±Ó9ˆÜ$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô ä"Ñ"N°D·N±N×4MÑ4MÔ"NÓNˆÜ˜mÓ,ˆŒØ—‘×*Ñ*ò 	3ˆAØ#×)Ñ)¨!¯'©'Ó2ˆA�Gð	3à—‘×*Ñ*ò 	EˆAÜ'¨¯©°mÓDˆA�Lð	EäØ�O‰OÒU §¡× 8Ñ 8ÒU¸T¿^¹^×=UÑ=Uó
ð 	
ð 	5Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó  — |j                   s�| j                  j                  D ])  }|j                  sŒ|j                  j	                  «        Œ+ | j
                  j                  D ]&  }|j                  D ]  }|sŒ|j	                  «        Œ Œ( yrÕ   )r©   rà   rá   Ú
MarkAnchorrŸ   rä   rå   rè   )r#   r%   r­   rì   rí   Úas         r   r®   r®   N  sx   € à�?Š?Ø—‘×*Ñ*ò 	+ˆAØ�|‹|Ø—‘×(Ñ(Õ*ð	+ð —‘×*Ñ*ò 	$ˆAØ—\‘\ò $�ÚØ—M‘M•Oñ$ð	$ð r'   c                 óR  — | j                   dk(  �r| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        | j                  j                  |j                  «      }t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        t        d„ | j
                  j                  D «       «      }t        |«      | _        | j
                  j                  D ]"  }|j                  |j                   «      |_        Œ$ | j                  j                  D ]1  }|€Œ|j"                  D ]  }t	        |j$                  |«      |_        Œ Œ3 t'        | j                  xr. | j
                  j                  xr | j                  j                  «      S J d| j                   z  «       ‚)Nr€   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   rÛ   r¥   s     r   r   z subset_glyphs.<locals>.<genexpr>i  rÝ   rÞ   r†   )r‡   rß   r=   r$   r3   rà   rá   r.   râ   ÚLigatureCoverageÚLigatureArrayÚLigatureAttachÚLigatureCountr   rç   rW   rÜ   ÚComponentRecordÚLigatureAnchorrc   )r#   r`   ré   Úligature_indicesrë   rì   r/   rw   s           r   re   re   [  s¾  € à‡{�{�aÓØ×(Ñ(×/Ñ/°·±Ó9ˆÜ$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô Ø×0Ñ0×7Ñ7¸¿¹ÓAÐÜ,8Ø×Ñ×-Ñ-Ð/?ó-
ˆ×ÑÔ)ô ,/¨t×/AÑ/A×/PÑ/PÓ+Qˆ×ÑÔ(ä"Ñ"N°D·N±N×4MÑ4MÔ"NÓNˆÜ˜mÓ,ˆŒØ—‘×*Ñ*ò 	3ˆAØ#×)Ñ)¨!¯'©'Ó2ˆA�Gð	3à×#Ñ#×2Ñ2ò 	QˆAØˆyØØ×&Ñ&ò Q�Ü#/°×0@Ñ0@À-Ó#P�Õ ñQð	Qô
 Ø�O‰Oò 1Ø—‘×(Ñ(ò1à×"Ñ"×0Ñ0ó
ð 	
ð 	5Ð&¨¯©Ñ4Ó4ˆqr'   c                 óF  — |j                   s•| j                  j                  D ])  }|j                  sŒ|j                  j	                  «        Œ+ | j
                  j                  D ]:  }|€Œ|j                  D ]&  }|j                  D ]  }|sŒ|j	                  «        Œ Œ( Œ< yrÕ   )	r©   rà   rá   rï   rŸ   rô   rõ   r÷   rø   )r#   r%   r­   rì   r/   rw   rð   s          r   r®   r®   {  s™   € à�?Š?Ø—‘×*Ñ*ò 	+ˆAØ�|‹|Ø—‘×(Ñ(Õ*ð	+ð ×#Ñ#×2Ñ2ò 	(ˆAØˆyØØ×&Ñ&ò (�Ø×)Ñ)ò (�AÚØŸ™�ñ(ñ(ð	(ð r'   c                 ó*  — | j                   dk(  �rð| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        | j                  j                  |j                  «      }t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        t        d„ | j
                  j                  D «       «      }t        |«      | _        | j
                  j                  D ]"  }|j                  |j                  «      |_        Œ$ | j                  j                  D ]  }t	        |j                   |«      |_        Œ t#        | j                  xr. | j
                  j                  xr | j                  j                  «      S J d| j                   z  «       ‚)Nr€   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   rÛ   r¥   s     r   r   z subset_glyphs.<locals>.<genexpr>™  s   è ø€ Ò"O¨q 1§7¥7Ñ"OùrÞ   r†   )r‡   ÚMark1Coverager=   r$   r3   Ú
Mark1Arrayrá   r.   râ   ÚMark2CoverageÚ
Mark2ArrayÚMark2Recordr   rç   rW   rÜ   ÚMark2Anchorrc   )r#   r`   Úmark1_indicesÚmark2_indicesrë   rì   rí   s          r   re   re   ‹  s†  € à‡{�{�aÓØ×*Ñ*×1Ñ1°!·(±(Ó;ˆÜ%1Ø�O‰O×&Ñ&¨ó&
ˆ�‰Ô"ô %(¨¯©×(BÑ(BÓ$Cˆ�‰Ô!Ø×*Ñ*×1Ñ1°!·(±(Ó;ˆÜ&2Ø�O‰O×'Ñ'¨ó'
ˆ�‰Ô#ô %(¨¯©×(CÑ(CÓ$Dˆ�‰Ô!ä"Ñ"O°D·O±O×4NÑ4NÔ"OÓOˆÜ˜mÓ,ˆŒØ—‘×+Ñ+ò 	3ˆAØ#×)Ñ)¨!¯'©'Ó2ˆA�Gð	3à—‘×,Ñ,ò 	GˆAÜ(¨¯©¸ÓFˆA�Mð	GäØ�O‰OÒW §¡× 9Ñ 9ÒW¸d¿o¹o×>WÑ>Wó
ð 	
ð 	5Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó  — |j                   s�| j                  j                  D ])  }|j                  sŒ|j                  j	                  «        Œ+ | j
                  j                  D ]&  }|j                  D ]  }|sŒ|j	                  «        Œ Œ( yrÕ   )r©   rþ   rá   rï   rŸ   r   r  r  )r#   r%   r­   rì   rí   s        r   r®   r®   ¦  sx   € à�?Š?Ø—‘×+Ñ+ò 	+ˆAØ�|‹|Ø—‘×(Ñ(Õ*ð	+ð —‘×,Ñ,ò 	$ˆAØ—]‘]ò $�ÚØ—M‘M•Oñ$ð	$ð r'   c                  ó   — y r   r   ©r#   Úlookup_indicess     r   Úsubset_lookupsr	  ³  s   € ð 	r'   c                 ó   — g S r   r   r”   s    r   Úcollect_lookupsr  Ä  s	   € ð €Ir'   c                  ó   — yrÕ   r   ©r#   r%   r­   s      r   r®   r®   Õ  s   € ð r'   c                  ó   — y)NFr   r”   s    r   Úmay_have_non_1to1r  ä  s   € ð r'   c                  ó   — yrÕ   r   r”   s    r   r  r  ë  s   € ð r'   c                 ó–  —  G d„ dt         «      }| j                  dvry 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y)ú0__subset_classify_context.<locals>.ContextHelperc                 óÈ  — |j                   j                  d«      rd}d}nd}d}|j                   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„ }nN|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(  r1|d$z   | _        |d%z   | _        |d&z   | _        |d'z   | _        d(„ | _        y |dk(  rX|d)z   | _        |d*z   | _        |d+z   | _        |d,z   | _        d-„ | _        |rd.nd/| _        |rdnd| _        |rd0| _        y d1| _        y |dk(  r|rd2nd3| _        y y )4NÚSubstÚSubÚPosÚChainr€   r’   Ú r   ÚLookupRecordc                 ó   — | j                   S r   ©rˆ   ©r¿   s    r   ú<lambda>zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó
   €  Q§Z¡Z€ r'   c                 ó   — | j                   S r   r  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó
   € ¨!¯*©*€ r'   c                  ó   — y)Nr   r   r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   � r'   c                  ó   — y)N)NNNr   r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  r#  r'   c                 ó   — | j                   fS r   )ÚInputr  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   €  a§g¡g Z€ r'   c                 óH   — | j                   | j                  | j                  fS r   ©Ú	Backtrackr&  Ú	LookAheadr  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  ó   € ¨1¯;©;¸¿¹ÀÇÁÐ*M€ r'   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­w©r€   Nr-   ©r   Úxs     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>#  ó   è ø€ Ò&=°a¤s¨1£v°¥zÑ&=ùó   ‚)r&  rŽ   ©r¿   r*   s     r   ÚSetRuleDatazN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData!  ó   € Ø!"‘J�Q”WÙ&=¸1Ô&=‘O�Q•\r'   c                 ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y ©Nr   r€   r‘   ©r*  r&  r+  r.   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountr4  s     r   ÚChainSetRuleDatazS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData%  óP   € Ø:;Ñ7�Q”[ !¤'¨1¬;ô
 ˜Q˜q™T›¤C¨¨!©£I°¡M´3°q¸±t³9ð	ØÔ-ØÔ)ØÕ-r'   r‘   c                 ó   — | j                   S r   r  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>.  r  r'   c                 ó   — | j                   S r   r  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>/  r!  r'   c                 ó   — | j                   fS r   ©ÚClassDefr  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>0  s   € ¨¯©¨€ r'   c                 óH   — | j                   | j                  | j                  fS r   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefr  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>1  s"   € Ø×'Ñ'Ø—O‘OØ×'Ñ'ð.€ r'   c                 ó   — |\  | _         y r   rB  r4  s     r   ÚSetContextDatazQ__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetContextData7  s   € Ø$%‘M�Q•Zr'   c                 ó.   — |\  | _         | _        | _        y r   rE  r4  s     r   ÚSetChainContextDatazV__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetChainContextData:  s   € ØRSÑO�QÔ(¨!¬/¸1Õ;Nr'   c                 ó   — | j                   fS r   rÛ   r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>=  r'  r'   c                 óH   — | j                   | j                  | j                  fS r   r)  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>>  r,  r'   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­wr/  r-   r0  s     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>B  r2  r3  )rÜ   rŽ   r4  s     r   r5  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData@  r6  r'   c                 ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y r8  r9  r4  s     r   r=  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataD  r>  r'   c                 ó    — | j                   d   S ©Nr   r  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>M  s   €  Q§Z¡Z°¡]€ r'   c                 ó    — | j                   d   S rS  )ÚInputCoverager  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>N  s   € ¨!¯/©/¸!Ñ*<€ r'   c                 ó   — | j                   S r   r  r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>S  r  r'   c                 óN   — | j                   | j                  z   | j                  z   S r   )rŠ   rU  r‰   r  s    r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>T  s$   € Ø×'Ñ'¨!¯/©/Ñ9¸A×<OÑ<OÑOð r'   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   r-   r0  s     r   r   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>Z  s   è ø€ Ò&9°!¤s¨1§vÑ&9ùó   ‚)rˆ   rŽ   r4  s     r   r5  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataX  s   € Ø$%‘M�Q”ZÙ&9°qÔ&9‘O�Q•\r'   c                 óf   — |\  | _         | _        | _        d„ |D «       \  | _        | _        | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   r-   r0  s     r   r   zf__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>b  s   è ø€ Ò+ Aœ˜QŸÑ+ùrZ  )rŠ   rU  r‰   r:  r;  r<  r4  s     r   r=  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData\  s7   € ØRSÑO�QÔ(¨!¬/¸1Ô;Nñ
 ,¨Ô+ñ	ØÔ-ØÔ)ØÕ-r'   r†   ÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                 ó   — || v r|gS g S r   r   ©r$   rw   r¿   s      r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>y  s   € ¸QÀ&¹[°q°c€ Èb€ r'   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                 ó^   — |r|j                  | |«      S |dk(  rt        | «      S t        «       S rS  )rP   r9   rb  s      r   r  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s<   € áð ×%Ñ% f¨aÓ0ð ð *+¨aªœ#˜f›+ð ô 69³Uð r'   rG  rC  r&  rÜ   rU  rˆ   )Ú__name__ÚendswithÚ
startswithÚTypÚTyper  ÚChainTypÚInputIdxÚDataLenr  rˆ   ÚContextDatarJ  ÚRuleDatar5  r]  r^  r_  r`  Ú	IntersectrC  ÚClassDefIndexr&  )r#   rO   r‡   rk  rl  r  rn  ro  rm  rˆ   ÚChainCoveragerp  ÚChainContextDatarJ  rL  rq  ÚChainRuleDatar5  r=  s                      r   Ú__init__z9__subset_classify_context.<locals>.ContextHelper.__init__ý  st  € Ø�~‰~×&Ñ& wÔ/Ø�Ø‘à�Ø�Ø�~‰~×(Ñ(¨Ô1Ø�Ø�Ø‘à�Ø�Ø�Ø˜s‘{ˆHàˆDŒHØˆDŒIØˆDŒJØ$ˆDŒMØ$ˆDŒMØ"ˆDŒLà $ ~Ñ 5ˆDÔà˜Š{Ù/�Ù 4�Ù/�Ù#?Ð Ø!%�Ø&*Ð#Ù/�Ù M�ò>ó>ð ˜1’Ù/�Ù 4�Ù5�ñ$Ð ò&òTñ 0�Ù M�ò>ó>ð ˜1’Ù2�Ù <�Ø"�Ø#'Ð Ø!%�Ø&*Ð#Ù/�ñ!�ò:ó,ð 8Ð.°Ñ7Ó7�qáØ -�”Ø#3�Ô Ø&9�Ô#Ø -�”Ø#3�Õ à (�”Ø#.�Ô Ø&4�Ô#Ø (�”Ø#.�Ô à˜Š{Ø$ vÑ-�”	Ø!)¨KÑ!7�”Ø'¨)Ñ3�”Ø$,¨~Ñ$=�Ô!Ù!P�•Ø˜1’Ø$ {Ñ2�”	Ø!)Ð,<Ñ!<�”Ø'¨*Ñ4�”Ø$,¨Ñ$>�Ô!ñ"�”ñ 49¡¸j�”Ù*/¡Q°Q�Ô"Ù(-˜W�•
°7�•
Ø˜1’Ù05™_¸:�•
ð r'   N)rh  Ú
__module__Ú__qualname__rw  r   r'   r   ÚContextHelperr  ü  s	   „ óL	Fr'   rz  r�   Ú_subset__ContextHelpers)Úobjectr‡   ÚhasattrÚ	__class__r{  )r#   rz  Úhelpers      r   Ú__subset_classify_contextr€  õ  sš   € ôMFœô MFð^ ‡{�{˜)Ñ#ØÜ�4—>‘>Ð#<Ô=Ø13ˆ�‰Ô.Ø‡{�{˜$Ÿ.™.×@Ñ@Ñ@Ù˜tŸ~™~¨t¯{©{Ó;ˆØ>Dˆ�‰×.Ñ.¨t¯{©{Ñ;Ø�>‰>×1Ñ1°$·+±+Ñ>Ð>r'   c                 ó&  ‡‡— | j                  «       Š‰j                  | «      j                  |«      }|sg S ‰j                  | «      j                  |«      }| j                  dk(  �r»‰j                  | «      }t        | ‰j                  «      }t        | ‰j                  «      }|D �]w  }||k\  s||   sŒt        ||   ‰j                  «      D �]L  }|sŒt        ˆˆfd„t        |‰j                  |«      «      D «       «      sŒ6t        «       }	t        |‰j                  «      D ]ô  }
|
sŒ|
j                  }||	v rd }nJ|dk(  r)t!        ‰j                  | «      j"                  |   g«      }nt!        |j$                  |dz
     g«      }‰j&                  j(                  j*                  |
j,                     }|	j/                  |«       |j1                  «       r1|	j3                  t5        |t7        |j$                  «      dz   «      «       |j9                  ‰|¬«       Œö �ŒO �Œz y | j                  dk(  �rt        | ‰j:                  «      }|j                  |«      }‰j                  | «      }t        | ‰j                  «      }t        | ‰j                  «      }|D �]™  }||k\  s||   sŒt        ||   ‰j                  «      D �]n  }|sŒt        ˆˆfd„t        |‰j                  |«      «      D «       «      sŒ6t        «       }	t        |‰j                  «      D �]  }
|
sŒ|
j                  }||	v rd }n`|dk(  rt!        |j=                  ||«      «      }n?t!        |j=                  ‰j"                  t        |‰j$                  «      |dz
     «      «      }‰j&                  j(                  j*                  |
j,                     }|	j/                  |«       |j1                  «       r;|	j3                  t5        |t7        t        |‰j$                  «      «      dz   «      «       |j9                  ‰|¬«       �Œ �Œq �Œœ y | j                  dk(  �r9t        ˆfd„‰j                  | «      D «       «      sg S | }t        |‰j$                  «      }t        «       }	t        |‰j                  «      D ]Ø  }
|
sŒ|
j                  }||	v rd }n8|dk(  rt!        |«      }n't!        ||   j                  ‰j"                  «      «      }‰j&                  j(                  j*                  |
j,                     }|	j/                  |«       |j1                  «       r'|	j3                  t5        |t7        |«      dz   «      «       |j9                  ‰|¬«       ŒÚ y J d	| j                  z  «       ‚)
Nr€   c              3   óR   •‡K  — | ]  \  Š}t        ˆˆˆfd „|D «       «      –— Œ y­w)c              3   óX   •K  — | ]!  }‰j                  ‰j                  ‰|«      –— Œ# y ­wr   ©rr  r$   ©r   Úkrw   Úcdr`   s     €€€r   r   z+closure_glyphs.<locals>.<genexpr>.<genexpr>©  ó"   øè ø€ ÒD¸˜Ÿ™ A§H¡H¨b°!×4ÑDùó   ƒ'*N©rl   ©r   Úklistr‡  rw   r`   s     @€€r   r   z!closure_glyphs.<locals>.<genexpr>¨  ó(   ùè ø€ ò á!˜˜Eô ÕD¸eÔD×Dñùó   „#'r   r‘   )r[   c              3   óR   •‡K  — | ]  \  Š}t        ˆˆˆfd „|D «       «      –— Œ y­w)c              3   óX   •K  — | ]!  }‰j                  ‰j                  ‰|«      –— Œ# y ­w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   ó`   •K  — | ]%  }|d uxr |j                  ‰j                  «      –— Œ' y ­wr   r<   ©r   r1  r`   s     €r   r   z!closure_glyphs.<locals>.<genexpr>é  s*   øè ø€ ÒU¸q�1˜D�=Ò: Q§[¡[°·±Ó%:Ó:ÑUùó   ƒ+.r†   )r€  rˆ   r6   r:   r‡   rp  r›   r_  r`  r]  rl   Úziprq  r9   r  ÚSequenceIndexÚ	frozensetr$   r&  ÚtableÚ
LookupListÚLookupÚLookupListIndexÚaddr  r]   Úranger.   ra   rC  rP   )r#   r`   r[   r0   rp  ÚrssÚrssCountr2   r¿   ÚchaosÚllÚseqiÚ
pos_glyphsÚlookuprC  Úinput_coveragesrw   s    `              @r   ra   ra   •  sè  ù€ à×&Ñ&Ó(€Aà�j‰j˜Ó×(Ñ(¨Ó4€GÙØˆ	Ø—‘˜DÓ!×2Ñ2°:Ó>€Jà‡{�{�aÓØ—m‘m DÓ)ˆÜ�d˜AŸI™IÓ&ˆÜ˜4 §¡Ó0ˆØó 	DˆAØ�HŠ} C¨¢FØÜ˜S ™V Q§V¡VÓ,ó D�ÙØÜô ä%(¨°a·j±jÀ³mÓ%Dôô ð Ü›�Ü! ! Q§^¡^Ó4ò D�BÙØ Ø×+Ñ+�DØ˜u‘}à%)™
à 1š9Ü)2°A·J±J¸tÓ4D×4KÑ4KÈAÑ4NÐ3OÓ)P™Jä)2°A·G±G¸DÀ1¹HÑ4EÐ3FÓ)G˜JØŸW™W×/Ñ/×6Ñ6°r×7IÑ7IÑJ�FØ—I‘I˜d”OØ×/Ñ/Ô1ØŸ™¤U¨4´°Q·W±W³ÀÑ1AÓ%BÔCØ×)Ñ)¨!¸
Ð)ÕCò!DòDñ	Dð: 
�‰˜Ó	Ü˜4 §¡Ó,ˆØ×$Ñ$ ZÓ0ˆØ—m‘m DÓ)ˆÜ�d˜AŸI™IÓ&ˆÜ˜4 §¡Ó0ˆØó "	DˆAØ�HŠ} C¨¢FØÜ˜S ™V Q§V¡VÓ,ó D�ÙØÜô ä%(¨°a·j±jÀ³mÓ%Dôô ð Ü›�Ü! ! Q§^¡^Ó4ó D�BÙØ Ø×+Ñ+�DØ˜u‘}à%)™
à 1š9Ü)2Ø (× 8Ñ 8¸ÀQÓ Gó*™Jô *3Ø (× 8Ñ 8Ø$%§H¡H¬g°a¸¿¹Ó.AÀ$ÈÁ(Ñ.Kó!"ó*˜Jð
 ŸW™W×/Ñ/×6Ñ6°r×7IÑ7IÑJ�FØ—I‘I˜d”OØ×/Ñ/Ô1ØŸ™¤U¨4´´W¸QÀÇÁÓ5HÓ1IÈAÑ1MÓ%NÔOØ×)Ñ)¨!¸
Ð)ÖCò-DòDñ"	DðF 
�‰˜Ó	ÜÓUÀAÇJÁJÈtÓDTÔUÔUØˆIØˆÜ! ! Q§W¡WÓ-ˆÜ“ˆÜ˜!˜QŸ^™^Ó,ò 	<ˆBÙØØ×#Ñ#ˆDØ�u‰}à!‘
à˜1’9Ü!*¨:Ó!6‘Jä!*Ø'¨Ñ-×>Ñ>¸q¿x¹xÓHó"�Jð —W‘W×'Ñ'×.Ñ.¨r×/AÑ/AÑBˆFØ�I‰I�dŒOØ×'Ñ'Ô)Ø—‘œU 4¬¨_Ó)=ÀÑ)AÓBÔCØ×!Ñ! !°
Ð!Õ;ñ%	<ð( 	5Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó˜	  ‡— | j                  «       }| j                  dk(  �r”| j                  j                  ‰j                  «      }t        | |j                  «      }t        | |j                  «      }|D �cg c]  }||k  sŒ	||   ‘Œ }}|D ]†  }|sŒt        ||j                  «      }|D �	cg c])  }	|	r%t        ˆfd„|j                  |	«      D «       «      r|	‘Œ+ }}	t        ||j                  |«       t        ||j                  t        |«      «       Œˆ t        |«      D ��cg c]!  \  }}|sŒ	t        ||j                  «      sŒ |‘Œ# }}}| j                  j                  |«       t!        ||«      }t        | |j                  |«       t        | |j                  t        |«      «       t#        |«      S | j                  dk(  �rŠ| j                  j                  ‰j                  «      sy|j%                  | «      }
|
D �cg c]#  }|r|j                  ‰j                  d¬«      nd ‘Œ% }}||j&                     }t        | |j                  «      }t        | |j                  «      }|D �cg c]  }||k  sŒ	||   ‘Œ }}~t        | |j(                  «      j+                  | j                  j                  «      }t        |«      D ��cg c]  \  }}||v r|nd ‘Œ c}}}|D ]ò  }|sŒt        ||j                  «      }|D �	cg c]1  }	|	r-t        d„ t-        ||j                  |	«      «      D «       «      r|	‘Œ3 }}	t        ||j                  |«       t        ||j                  t        |«      «       |D ]_  }	|j/                  |	t-        ||j                  |	«      «      D ���cg c]$  \  }}|D �cg c]  }|j1                  |«      ‘Œ c}‘Œ& c}}}«       Œa Œô |D �cg c]  }|rt        ||j                  «      r|nd ‘Œ  }}|r|d   €|d= |r|d   €Œt        | |j                  |«       t        | |j                  t        |«      «       t#        |«      S | j                  d	k(  r#t        ˆfd
„|j                  | «      D «       «      S J d| j                  z  «       ‚c c}w c c}	w c c}}w c c}w c c}w c c}}w c c}	w c c}w c c}}}w c c}w )Nr€   c              3   óF   •K  — | ]  }t        ˆfd „|D «       «      –— Œ y­w)c              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   r?   )r   r   r`   s     €r   r   z*subset_glyphs.<locals>.<genexpr>.<genexpr>  s   øè ø€ Ò9¨a˜A §¡œMÑ9ùrG   NrŠ  )r   Úglistr`   s     €r   r   z subset_glyphs.<locals>.<genexpr>  s   øè ø€ ÒU¸eœÓ9°5Ô9×9ÑUùs   ƒ!r‘   FTr°   c              3   óL   ‡K  — | ]  \  Š}t        ˆfd „|D «       «      –— Œ y­w)c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r   )r   r†  Ú	klass_maps     €r   r   z*subset_glyphs.<locals>.<genexpr>.<genexpr>A  s   øè ø€ Ò6¨1˜˜YœÑ6ùs   ƒNrŠ  )r   rŒ  r«  s     @r   r   z subset_glyphs.<locals>.<genexpr>@  s(   øè ø€ ò á(˜	 5ô Ó6°Ô6×6ñùs   ƒ!$éÿÿÿÿr’   c              3   ó`   •K  — | ]%  }|d uxr |j                  ‰j                  «      –— Œ' y ­wr   r�   r’  s     €r   r   z subset_glyphs.<locals>.<genexpr>`  s*   øè ø€ ÒR¸A�1˜D�=Ò7 Q§X¡X¨a¯h©hÓ%7Ó7ÑRùr“  r†   )r€  r‡   rˆ   r=   r$   r›   r_  r`  r]  rl   rq  rÓ   r^  r.   r5   rA   r3   rc   rp  rs  rC  r6   r”  r5  rW   )r#   r`   rw   r0   r�  rž  r2   ÚrsÚssr¿   rp  r1  Ú
klass_mapsr«  rŒ  r†  s    `              r   re   re     sL  ø€ ð 	×&Ñ&Ó(€Aà‡{�{�aÓØ—-‘-×&Ñ& q§x¡xÓ0ˆÜ�d˜AŸI™IÓ&ˆÜ˜4 §¡Ó0ˆØ&Ö7˜!¨!¨h«,ˆs�1‹vÐ7ˆÐ7Øò 	.ˆBÙØÜ˜˜QŸV™VÓ$ˆBð öàÙÜÓUÀqÇzÁzÐRSÃ}ÔUÔUò ðˆBð ô �B˜Ÿ™ Ô#Ü�B˜Ÿ™¤S¨£WÕ-ð	.ô #,¨C£.×O™˜˜B²B¼7À2ÀqÇvÁvÕ;N’1ÐOˆÑOØ�‰×Ñ˜GÔ$Ü˜3 Ó(ˆÜ��a—i‘i Ô%Ü��a—n‘n¤c¨#£hÔ/Ü�C‹yÐØ	�‰˜Ó	Ø�}‰}×#Ñ# A§H¡HÔ-ØØ—m‘m DÓ)ˆàCNö
Ø>?©aˆA�H‰H�Q—X‘X TˆHÔ*°TÑ9ð
ˆ
ð 
ð
 ˜QŸ_™_Ñ-ˆÜ�d˜AŸI™IÓ&ˆÜ˜4 §¡Ó0ˆØ&Ö7˜!¨!¨h«,ˆs�1‹vÐ7ˆÐ7Øä˜$ §
¡
Ó+×5Ñ5°d·m±m×6JÑ6JÓKˆÜ;DÀS»>×J±°°C�a˜7‘l‰s¨Ñ,ÓJˆàò 	ˆBÙØÜ˜˜QŸV™VÓ$ˆBð öàÙÜñ ä,/°
¸A¿J¹JÀq»MÓ,Jôô ò ðˆBð ô �B˜Ÿ™ Ô#Ü�B˜Ÿ™¤S¨£WÔ-ð ò �Ø—‘Øô 14°JÀÇ
Á
È1ÃÓ0N÷ð á,˜I uð 6;Ö;°˜Ÿ™¨Õ+Ô;ôõñð#	ð6 EHÖH¸b‘RœG B¨¯©Ô/‰r°TÑ9ÐHˆÐHÙ�c˜"‘g�oØ�B�ñ �c˜"‘g‘oä��a—i‘i Ô%Ü��a—n‘n¤c¨#£hÔ/ô �C‹yÐØ	�‰˜Ò	ÜÓRÀÇÁÈDÓAQÔRÓRÐRà4Ð&¨¯©Ñ4Ó4ˆqùòa 8ùò
ùó Pùò
ùò 8ùó Kùòùò" <ùôùò Is`   Á7
RÂRÂ-.RÄ$
R Ä/R ÅR È(R&É*
R+É5R+ËR0Ë>6R6ÎS Î)R;ÏS Ï#SÒ;S c                 ó0  — | j                  «       }| j                  dv rÄt        | |j                  «      D ]ª  }|sŒt        ||j                  «      D ]Œ  }|sŒt        ||j                  t        ||j                  «      D �cg c]  }|r|j                  |v r|‘Œ c}«       t        ||j                  «      D ]%  }|sŒ|j                  |j                  «      |_        Œ' ŒŽ Œ¬ y | j                  dk(  rˆt        | |j                  t        | |j                  «      D �cg c]  }|r|j                  |v r|‘Œ c}«       t        | |j                  «      D ]%  }|sŒ|j                  |j                  «      |_        Œ' y J d| j                  z  «       ‚c c}w c c}w ©NrÃ   r’   r†   )	r€  r‡   r›   r_  r]  rÓ   r  rš  rW   )r#   r  rw   r®  r¿   r   s         r   r	  r	  e  s”  € ð 	×&Ñ&Ó(€Aà‡{�{�fÑÜ˜$ §	¡	Ó*ò 	RˆBÙØÜ˜R §¡Ó(ò R�ÙØÜØØ—N‘Nô #*¨!¨Q¯^©^Ó"<öàÙ "×"4Ñ"4¸Ñ"Fò òôô " ! Q§^¡^Ó4ò R�BÙØ Ø)7×)=Ñ)=¸b×>PÑ>PÓ)Q�BÕ&ñRñRñ	Rð& 
�‰˜Ò	ÜØØ�N‰Nô " $¨¯©Ó7öàÙ˜"×,Ñ,°Ñ>ò òô	
ô ˜$ §¡Ó/ò 	JˆBÙØØ!/×!5Ñ!5°b×6HÑ6HÓ!IˆBÕñ	Jð
 	5Ð&¨¯©Ñ4Ó4ˆqùò3ùòs   Â FÄFc           
      óÚ  — | j                  «       }| j                  dv rnt        | |j                  «      D ���cg c]J  }|rFt        ||j                  «      D ]-  }|r)t        ||j
                  «      D ]  }|r|j                  ‘Œ Œ/ ŒL c}}}S | j                  dk(  r1t        | |j
                  «      D �cg c]  }|sŒ|j                  ‘Œ c}S J d| j                  z  «       ‚c c}}}w c c}w r²  )r€  r‡   r›   r_  r]  r  rš  )r#   rw   r®  r¿   r   s        r   r  r  ”  së   € ð 	×&Ñ&Ó(€Aà‡{�{�fÑô ˜d A§I¡IÓ.÷
ð 
àÙÜ˜R §¡Ó(ò	
ð ÙÜ˜a §¡Ó0ò
ð Ùð ×Óð
Øð
Øô
ð 	
ð 
�‰˜Ò	Ü-4°T¸1¿>¹>Ó-JÖQ rÊb�×"Ó"ÒQÐQà4Ð&¨¯©Ñ4Ó4ˆqùô
ùò Rs   ¹AC!Â4C(Â<C(c                 ó‚   — | j                   dk(  r| j                  j                  ||«       y J d| j                   z  «       ‚rÌ   )r‡   ÚExtSubTablera   r_   s      r   ra   ra   ­  s8   € à‡{�{�aÒØ×Ñ×'Ñ'¨¨:Õ6à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó|   — | j                   dk(  r| j                  j                  «       S J d| j                   z  «       ‚rÌ   )r‡   rµ  r  r”   s    r   r  r  µ  s7   € à‡{�{�aÒØ×Ñ×1Ñ1Ó3Ð3à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó~   — | j                   dk(  r| j                  j                  |«      S J d| j                   z  «       ‚rÌ   )r‡   rµ  re   ©r#   r`   s     r   re   re   ½  s9   € à‡{�{�aÒØ×Ñ×-Ñ-¨aÓ0Ð0à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó€   — | j                   dk(  r| j                  j                  ||«      S J d| j                   z  «       ‚rÌ   )r‡   rµ  r®   r  s      r   r®   r®   Å  s;   € à‡{�{�aÒØ×Ñ×1Ñ1°$¸Ó@Ð@à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó~   — | j                   dk(  r| j                  j                  |«      S J d| j                   z  «       ‚rÌ   )r‡   rµ  r	  r  s     r   r	  r	  Í  s9   € à‡{�{�aÒØ×Ñ×.Ñ.¨~Ó>Ð>à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 ó|   — | j                   dk(  r| j                  j                  «       S J d| j                   z  «       ‚rÌ   )r‡   rµ  r  r”   s    r   r  r  Õ  s7   € à‡{�{�aÒØ×Ñ×/Ñ/Ó1Ð1à4Ð&¨¯©Ñ4Ó4ˆqr'   c                 óš  — |€t        |j                  «      }t        | «      }|j                  }|j	                  |d«      \  }}|t        |j                  «      k7  r't        |j                  «      t        «       fx\  }}||<   |j                  |«      ry |j                  |«       | j                  D ]  }|sŒ|j                  ||«       Œ y )Nr§   )r–  r$   ÚidÚ_doneLookupsÚgetr.   r9   Úissubsetr]   ÚSubTablera   )r#   r`   r[   ÚkeyÚdoneLookupsr1   ÚcoveredÚsts           r   ra   ra   Ý  s¶   € àÐÜ˜qŸx™xÓ(ˆ
ô ˆT‹(€CØ—.‘.€KØ —_‘_ S¨)Ó4�N€Eˆ7Ø”�A—H‘H“ÒÜ-0°·±«]¼C»EÐ,BÐB‰ˆˆw˜ SÑ)Ø×Ñ˜7Ô#ØØ‡N�N�:Ôà�m‰mò )ˆÙØØ
×Ñ˜!˜ZÕ(ñ)r'   c                 óÀ  — | j                   D �cg c]  }|sŒ|j                  |«      sŒ|‘Œ c}| _         t        | j                   «      | _        t	        | d«      rk| j
                  �_| j
                  |j                  vrd | _        | xj                  dz  c_        n*|j                  j                  | j
                  «      | _        t        | j                  «      S c c}w )NÚMarkFilteringSetiïÿÿÿ)
rÁ  re   r.   ÚSubTableCountr}  rÇ  Úused_mark_setsÚ
LookupFlagrW   rc   )r#   r`   rÅ  s      r   re   re   ò  s®   € à"&§-¡-ÖN˜B²2¸"×:JÑ:JÈ1Õ:M’RÒN€D„MÜ˜TŸ]™]Ó+€DÔÜˆtÐ'Ô(¨T×-BÑ-BÐ-NØ× Ñ ¨×(8Ñ(8Ñ8Ø$(ˆDÔ!Ø�OŠO˜uÑ$ŽOà$%×$4Ñ$4×$:Ñ$:¸4×;PÑ;PÓ$QˆDÔ!Ü�×"Ñ"Ó#Ð#ùò Os   �C—C©Cc                 ó\   — d}| j                   D ]  }|sŒ|j                  ||«      sŒd}Œ |S ©NFT)rÁ  r®   )r#   r%   r­   ÚretrÅ  s        r   r®   r®   ÿ  s<   € à
€CØ�m‰mò ˆÙØØ×Ñ  gÕ.Ø‰Cð	ð
 €Jr'   c                 óH   — | j                   D ]  }|j                  |«       Œ y r   )rÁ  r	  )r#   r  r`   s      r   r	  r	  
  s#   € à�]‰]ò )ˆØ	×Ñ˜Õ(ñ)r'   c                 ó<   — t        d„ | j                  D «       g «      S )Nc              3   óB   K  — | ]  }|sŒ|j                  «       –— Œ y ­wr   )r  ©r   rÅ  s     r   r   z"collect_lookups.<locals>.<genexpr>  s   è ø€ ÒC¨Â�×"Ñ"×$ÑCùó   ‚Š)ÚsumrÁ  r”   s    r   r  r    s   € äÑC¨t¯}©}ÔCÀRÓHÐHr'   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   óB   K  — | ]  }|sŒ|j                  «       –— Œ y ­wr   )r  rÑ  s     r   r   z$may_have_non_1to1.<locals>.<genexpr>  s   è ø€ ÒD¨"Âˆr×#Ñ#×%ÑDùrÒ  )rH   rÁ  r”   s    r   r  r    s   € äÑD°·±ÔDÓDÐDr'   c                 óˆ   — t        | j                  «      D ��cg c]  \  }}|sŒ	|j                  |«      sŒ|‘Œ c}}S c c}}w )z(Returns the indices of nonempty lookups.)r5   r™  re   )r#   r`   r2   r/   s       r   re   re     s2   € ô $ D§K¡KÓ0×M‘$�!�Q²A¸!¿/¹/È!Õ:LŠAÓMÐMùÓMs   ™
>¤>¶>c                 ó\   — d}| j                   D ]  }|sŒ|j                  ||«      sŒd}Œ |S rÌ  )r™  r®   )r#   r%   r­   rÍ  r/   s        r   r®   r®      s<   € à
€CØ�[‰[ò ˆÙØØ×Ñ˜t WÕ-Ø‰Cð	ð
 €Jr'   c                 ó
  — | j                  «        |D �cg c]!  }|| j                  k  sŒ| j                  |   ‘Œ# c}| _        t        | j                  «      | _        | j                  D ]  }|j	                  |«       Œ y c c}w r   )ÚensureDecompiledÚLookupCountr™  r.   r	  ©r#   r  r2   r/   s       r   r	  r	  +  sm   € à×ÑÔØ+9ÖR a¸QÀ×AQÑAQÓ=Q�4—;‘;˜q“>ÒR€D„KÜ˜4Ÿ;™;Ó'€DÔØ�[‰[ò )ˆØ	×Ñ˜Õ(ñ)ùò Ss
   •B ªB c                 ó–   — | j                  «        t        | j                  «      D ��cg c]  \  }}||v r|nd‘Œ c}}| _        yc c}}w ©z+Sets lookups not in lookup_indices to None.N)rÙ  r5   r™  rÛ  s       r   Úneuter_lookupsrÞ  4  sE   € ð 	×ÑÔä7@ÀÇÁÓ7M÷Ù/3¨q°!ˆQ�.Ñ ‰ dÑ*ó€D…Kùó s   ©Ac                 óð   ‡ — t        |«      }|}	 t        ˆ fd„|D «       g «      }|D �cg c]  }||vr|‰ j                  k  r|‘Œ }}|st        |«      S t        |«      }|j                  |«       |}Œcc c}w )zBReturns sorted index of all lookups reachable from lookup_indices.c              3   óx   •K  — | ]1  }|‰j                   k  sŒ‰j                  |   j                  «       –— Œ3 y ­wr   )rÚ  r™  r  r…   s     €r   r   z"closure_lookups.<locals>.<genexpr>D  s/   øè ø€ ÒW°!À!Àd×FVÑFVÓBVˆT�[‰[˜‰^×+Ñ+×-ÑWùs   ƒ:˜":)r   rÓ  rÚ  Úextend)r#   r  ÚrecurseÚrecurse_lookupsr/   s   `    r   Úclosure_lookupsrä  =  s—   ø€ ô   Ó/€NØ€GØ
ÜÛW°wÔWØó
ˆð %ö
àØ˜Ñ&¨1¨t×/?Ñ/?Ò+?ò ð
ˆð 
ñ
 Ü˜nÓ-Ð-Ü$ _Ó5ˆØ×Ñ˜oÔ.Ø!ˆð ùò

s   ©A3c                 óR  — | j                   D �cg c]	  }||v sŒ|‘Œ c}| _         | j                   D �cg c]  }|j                  |«      ‘Œ c}| _         t        | j                   «      | _        | j                  xs$ t	        | j
                  t        j                  «      S c c}w c c}w )z2 "Returns True if feature is non-empty afterwards.)rš  rW   r.   rÚ  Ú
isinstanceÚFeatureParamsr   ÚFeatureParamsSize)r#   r  r/   s      r   r	  r	  S  s‘   € ð (,×';Ñ';ÖS !¸qÀNÒ?RšAÒS€DÔà=A×=QÑ=QÖR¸˜N×0Ñ0°Õ3ÒR€DÔÜ˜4×/Ñ/Ó0€DÔð ×Ñò œzØ×ÑœH×6Ñ6ó ð ùò TùâRs   �	B™B³B$c                 ó²   — t        | j                  «      D ��cg c]1  \  }}|j                  j                  |«      s|j                  dk(  r|‘Œ3 c}}S c c}}w )ú)Returns the indices of nonempty features.Úpref)r5   ÚFeatureRecordÚFeaturer	  Ú
FeatureTag)r#   r  r2   Úfs       r   r	  r	  b  sP   € ô ˜d×0Ñ0Ó1÷áˆAˆqØ�I‰I×$Ñ$ ^Ô4¸¿¹ÈÒ8Nò 	
óð ùó s   ™6Ac                 ó.   ‡ — t        ˆ fd„|D «       g «      S )Nc              3   ó‚   •K  — | ]6  }|‰j                   k  r%‰j                  |   j                  j                  –— Œ8 y ­wr   )ÚFeatureCountrì  rí  rš  r…   s     €r   r   z"collect_lookups.<locals>.<genexpr>s  s>   øè ø€ ò 	
àØ�4×$Ñ$Ò$ð ×Ñ˜qÑ!×)Ñ)×9Õ9ñ	
ùs   ƒ<?)rÓ  ©r#   Úfeature_indicess   ` r   r  r  p  s"   ø€ äó	
à$ô	
ð
 	óð r'   c                 ó¶   — | j                  «        t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )rÙ  r3   rì  r.   rò  rc   ró  s     r   Úsubset_featuresrö  |  sG   € à×ÑÔÜ% d×&8Ñ&8¸/ÓJ€DÔÜ˜D×.Ñ.Ó/€DÔÜ�×!Ñ!Ó"Ð"r'   c                 óŠ   — | j                   D �cg c])  }|j                  j                  |«      r|j                  ‘Œ+ c}S c c}w )rê  )ÚSubstitutionRecordrí  r	  ÚFeatureIndex)r#   r  r¿   s      r   r	  r	  „  s@   € ð
 ×(Ñ(öàØ�9‰9×#Ñ# NÔ3ð 	
�‹òð ùò s   �.A c                 óB   ‡— t        ˆfd„| j                  D «       g «      S )rê  c              3   óT   •K  — | ]  }|j                   j                  ‰«      –— Œ! y ­wr   )ÚFeatureTableSubstitutionr	  )r   rï  r  s     €r   r   z!subset_lookups.<locals>.<genexpr>’  s*   øè ø€ ò 	
àð ×&Ñ&×5Ñ5°n×Eñ	
ùr‚   ©rÓ  ÚFeatureVariationRecordr  s    `r   r	  r	  Ž  s*   ø€ ô ó	
à×0Ñ0ô	
ð 	óð r'   c                 óB   ‡— t        ˆfd„| j                  D «       g «      S )Nc              3   óœ   •K  — | ]C  }|j                   j                  D ](  }|j                  ‰v r|j                  j                  –— Œ* ŒE y ­wr   )rü  rø  rù  rí  rš  )r   Úvrr¿   rô  s      €r   r   z"collect_lookups.<locals>.<genexpr>�  sP   øè ø€ ò 	
àØ×0Ñ0×CÑCò	
ð Ø�~‰~ Ñ0ð �I‰I×%Õ%ð	
Ø%ñ	
ùs   ƒA	Arý  ró  s    `r   r  r  š  s(   ø€ äó	
à×1Ñ1ô	
ð 	óð r'   c                 óH  — | j                  «        | j                  D �cg c]  }|j                  |v sŒ|‘Œ c}| _        | j                  D ]"  }|j                  |j                  «      |_        Œ$ t	        | j                  «      | _        t        | j
                  «      S c c}w r   )rÙ  rø  rù  rW   r.   ÚSubstitutionCountrc   ©r#   rô  r¿   s      r   rö  rö  §  s�   € à×ÑÔà×*Ñ*öØ¨a¯n©nÀÒ.OŠò€DÔð ×$Ñ$ò ?ˆØ(×.Ñ.¨q¯~©~Ó>ˆ�ð?ä  ×!8Ñ!8Ó9€DÔÜ�×&Ñ&Ó'Ð'ùòs
   ŸB³Bc                 óÊ  — | j                  «        | j                  D ]  }|j                  j                  |«       Œ | j                  rm| j                  d   j                  j                  sJ| j                  j                  «        | j                  r$| j                  d   j                  j                  sŒJt        | j                  «      | _        t        | j                  «      S )Nr¬  )	rÙ  rþ  rü  rö  r  Úpopr.   ÚFeatureVariationCountrc   r  s      r   rö  rö  ´  sÍ   € à×ÑÔØ×(Ñ(ò DˆØ	×"Ñ"×2Ñ2°?ÕCðDð
 	×#Ò#Ø×+Ñ+Øñ
ç
"Ñ
"×#4Ñ#4ð5ð 	×#Ñ#×'Ñ'Ô)ð 	×#Ò#Ø×+Ñ+Øñ
ç
"Ñ
"×#4Ñ#4ñ5ô
 "% T×%@Ñ%@Ó!A€DÔÜ�×*Ñ*Ó+Ð+r'   c                 ó°  — | j                   |v r!|j                  | j                   «      | _         nd| _         | j                  D �cg c]	  }||v sŒ|‘Œ c}| _        | j                  D �cg c]  }||v sŒ|j                  |«      ‘Œ c}| _        t        | j                  «      | _        t        | j                  xs | j                   dk7  «      S c c}w c c}w ©Néÿÿ  )ÚReqFeatureIndexrW   rù  r.   rò  rc   )r#   rô  rï  s      r   rö  rö  Æ  sÄ   € à×Ñ˜Ñ.Ø.×4Ñ4°T×5IÑ5IÓJˆÕà$ˆÔØ$(×$5Ñ$5ÖN˜q¸¸oÒ9MšÒN€DÔð +/×*;Ñ*;öØ%&¸qÀOÒ?Sˆ×Ñ˜aÕ ò€DÔô ˜D×-Ñ-Ó.€DÔÜ�×!Ñ!ÒB T×%9Ñ%9¸UÑ%BÓCÐCùò Oùòs   Á	CÁCÁ)	CÁ3Cc                 óŠ   — | j                   d d  }| j                  dk7  r|j                  | j                  «       t        |«      S r	  )rù  r  Úappendr   ró  s     r   Úcollect_featuresr  Õ  s?   € à×'Ñ'©Ð*€OØ×Ñ˜uÒ$Ø×Ñ˜t×3Ñ3Ô4Ü�oÓ&Ð&r'   c                 ó\  — | j                   r$| j                   j                  |«      s	|sd | _         | j                  D �cg c]   }|j                  j                  |«      sŒ|‘Œ" c}| _        t	        | j                  «      | _        t        | j
                  xs | j                   «      S c c}w r   )ÚDefaultLangSysrö  ÚLangSysRecordÚLangSysr.   ÚLangSysCountrc   )r#   rô  ÚkeepEmptyDefaultLangSysr/   s       r   rö  rö  Ý  s‘   € ð 	×ÒØ×#Ñ#×3Ñ3°OÔDÙ'à"ˆÔà×%Ñ%öØ¨¯©×)BÑ)BÀ?Õ)SŠò€DÔô ˜D×.Ñ.Ó/€DÔÜ�×!Ñ!Ò8 T×%8Ñ%8Ó9Ð9ùò	s   ¿ B)Á B)c                 ó  — | j                   D �cg c]  }|j                  j                  «       ‘Œ }}| j                  r)|j	                  | j                  j                  «       «       t        t        |g «      «      S c c}w r   )r  r  r  r  r  r   rÓ  )r#   r/   rô  s      r   r  r  ì  sf   € à=A×=OÑ=OÖP¸�q—y‘y×1Ñ1Õ3ÐP€OÐPØ×ÒØ×Ñ˜t×2Ñ2×CÑCÓEÔFÜ”c˜/¨2Ó.Ó/Ð/ùò Qs   �!A<c                 óþ   — | j                   D �cg c]/  }|j                  j                  ||j                  dk(  «      s|r|‘Œ1 c}| _         t	        | j                   «      | _        t        | j
                  «      S c c}w )NÚDFLT)ÚScriptRecordÚScriptrö  Ú	ScriptTagr.   ÚScriptCountrc   )r#   rô  Úretain_emptyr`   s       r   rö  rö  ô  sp   € ð
 ×"Ñ"öàØ�8‰8×#Ñ# O°Q·[±[ÀFÑ5JÔKÙò 	
ò€DÔô ˜4×,Ñ,Ó-€DÔÜ�× Ñ Ó!Ð!ùòs   �4A:c                 óN   — t        t        d„ | j                  D «       g «      «      S )Nc              3   óP   K  — | ]  }|j                   j                  «       –— Œ  y ­wr   )r  r  )r   r`   s     r   r   z#collect_features.<locals>.<genexpr>  s   è ø€ ÒR¸1˜1Ÿ8™8×4Ñ4×6ÑRùs   ‚$&)r   rÓ  r  r”   s    r   r  r    s!   € ä”cÑRÀ×@QÑ@QÔRÐTVÓWÓXÐXr'   ÚEBLCc                 ór  — | j                   D ]m  }|j                  D ]0  }|j                  D �cg c]  }||j                  v sŒ|‘Œ c}|_        Œ2 |j                  D �cg c]  }|j                  sŒ|‘Œ c}|_        Œo | j                   D �cg c]  }|j                  sŒ|‘Œ c}| _         yc c}w c c}w c c}w rÕ   )ÚstrikesÚindexSubTablesÚnamesr$   )r#   r`   ÚstrikeÚindexSubTableÚnr2   s         r   re   re     sŸ   € à—,‘,ò NˆØ#×2Ñ2ò 	TˆMØ.;×.AÑ.AÖ"S¨ÀQÈ!Ï(É(Â]¢1Ò"SˆMÕð	Tà,2×,AÑ,AÖ M qÀQÇWÃW¢Ò MˆÕðNð  $Ÿ|™|Ö@˜!¨q×/?Ó/?’AÒ@€D„Làùò	 #TùÚ MùÚ@s#   ­B*ÁB*ÁB/Á/B/ÂB4ÂB4ÚEBDTc           
      óÌ   — | j                   D ��cg c]%  }|j                  D �ci c]  }||v sŒ|||   “Œ c}‘Œ' }}}|D �cg c]  }|sŒ|‘Œ	 c}| _         yc c}w c c}}w c c}w rÕ   )Ú
strikeDatar$   )r#   r`   r$  r   r)  s        r   re   re     sj   € ð GKÇoÁo÷Ø<B˜qŸx™xÖ7˜!¨1°ª;ˆˆF�1‰I‰Ô7ð€Jñ ð
 -7ÖA &º&’vÒA€D„OØùò 	8ùóùò
 Bs&   �A£	A­AµAÁA!Á	A!ÁAÚsbixc                 óÄ   — | j                   j                  «       D ]>  }|j                  D �ci c]!  }||j                  v sŒ||j                  |   “Œ# c}|_        Œ@ yc c}w rÕ   )r!  rT   r$   )r#   r`   r$  r   s       r   re   re     sZ   € à—,‘,×%Ñ%Ó'ò VˆØ67·h±hÖU°À!ÀvÇ}Á}ÒBT˜˜FŸM™M¨!Ñ,Ñ,ÒUˆ�ðVð ùò Vs   ¬AÁ AÚGSUBc                 óB  — | j                   |_         | j                   j                  r%| j                   j                  j                  «       }ng }| j                   j                  r&| j                   j                  j	                  |«      }ng }t        | j                   dd «      r(|| j                   j                  j	                  |«      z  }t        |«      }| j                   j                  r±i |_	        	 t        |j                  «      }|D ]|  }|| j                   j                  j                  k\  rŒ'| j                   j                  j                  |   sŒK| j                   j                  j                  |   j                  |«       Œ~ ||j                  k(  rnŒ§|`	|` y ©NÚFeatureVariations)r—  Ú
ScriptListr  ÚFeatureListr  r›   r/  r   r˜  r¾  r–  r$   rÚ  r™  ra   )r#   r`   rô  r  Úorig_glyphsr2   s         r   ra   ra   &  sN  € à�j‰j€A„GØ‡z�z×ÒØŸ*™*×/Ñ/×@Ñ@ÓB‰àˆØ‡z�z×ÒØŸ™×/Ñ/×?Ñ?ÀÓP‰àˆÜˆt�z‰zÐ.°Ô5Ø˜$Ÿ*™*×6Ñ6×FÑFÀÓWÑWˆÜ Ó/€NØ‡z�z×ÒØˆŒØÜ# A§H¡HÓ-ˆKØ#ò B�Ø˜Ÿ
™
×-Ñ-×9Ñ9Ò9ØØ—z‘z×,Ñ,×3Ñ3°AÒ6ØØ—
‘
×%Ñ%×,Ñ,¨QÑ/×>Ñ>¸qÕAðBð ˜aŸh™hÒ&Øð ð ˆNØ	‰r'   ÚGPOSc                 óÄ   — |j                   |_        | j                  j                  r&| j                  j                  j	                  |«      }ng }| j                  |«       yrÕ   )Úglyphs_gsubedr$   r—  r˜  re   r	  )r#   r`   r  s      r   re   re   D  sJ   € à�‰€A„HØ‡z�z×ÒØŸ™×.Ñ.×<Ñ<¸QÓ?‰àˆØ×Ñ˜Ô'Ør'   c                 óF   — | j                   t        j                  d«      k(  S )Nr,  )r~  r   ÚgetTableClassr”   s    r   Úretain_empty_scriptsr8  O  s   € ð �>‰>œU×0Ñ0°Ó8Ñ8Ð8r'   c                 ó  — | j                   j                  r%| j                   j                  j                  |«       | j                   j                  r&| j                   j                  j                  |«      }ng }t	        | j                   dd«      r(|| j                   j
                  j                  |«      z  }t        |«      }| j                   j                  r%| j                   j                  j                  |«       t	        | j                   dd«      r%| j                   j
                  j                  |«       | j                   j                  r5| j                   j                  j                  || j                  «       «       yy)zZRetains specified lookups, then removes empty features, language
    systems, and scripts.r/  N)
r—  r˜  r	  r1  r›   r/  r   rö  r0  r8  )r#   r  rô  s      r   r	  r	  V  s  € ð ‡z�z×ÒØ�
‰
×Ñ×,Ñ,¨^Ô<Ø‡z�z×ÒØŸ*™*×0Ñ0×?Ñ?ÀÓO‰àˆÜˆt�z‰zÐ.°Ô5Ø˜4Ÿ:™:×7Ñ7×FÑFÀ~ÓVÑVˆÜ  Ó1€OØ‡z�z×ÒØ�
‰
×Ñ×.Ñ.¨Ô?Üˆt�z‰zÐ.°Ô5Ø�
‰
×$Ñ$×4Ñ4°_ÔEØ‡z�z×ÒØ�
‰
×Ñ×-Ñ-Ø˜T×6Ñ6Ó8õ	
ð r'   c                 ó|   — | j                   j                  r&| j                   j                  j                  |«       yyrÝ  )r—  r˜  rÞ  r  s     r   rÞ  rÞ  m  s.   € ð ‡z�z×ÒØ�
‰
×Ñ×,Ñ,¨^Õ<ð r'   c                 óT  — | j                   j                  r%| j                   j                  j                  «       }ng }| j                   j                  r&| j                   j                  j	                  |«      }ng }t        | j                   dd«      r(|| j                   j                  j	                  |«      z  }t        |«      }| j                   j                  r&| j                   j                  j                  |«      }ng }|r| j                  |«       y| j                  |«       y)z/Remove (default) or neuter unreferenced lookupsr/  N)r—  r0  r  r1  r  r›   r/  r   r˜  rä  r	  rÞ  )r#   rA   rô  r  s       r   Úprune_lookupsr<  t  sß   € ð ‡z�z×ÒØŸ*™*×/Ñ/×@Ñ@ÓB‰àˆØ‡z�z×ÒØŸ™×/Ñ/×?Ñ?ÀÓP‰àˆÜˆt�z‰zÐ.°Ô5Ø˜$Ÿ*™*×6Ñ6×FÑFÀÓWÑWˆÜ Ó/€NØ‡z�z×ÒØŸ™×.Ñ.×>Ñ>¸~ÓN‰àˆÙØ×Ñ˜NÕ+à×Ñ˜NÕ+r'   c                 ó,  — | j                   j                  r«t        | j                   j                  j                  «      D ��cg c]  \  }}|j                  |v r|‘Œ }}}| j                   j                  j                  |«       t        | j                   dd «      r(| j                   j                  j                  |«       ng }| j                   j                  r5| j                   j                  j                  || j                  «       «       y y c c}}w r.  )
r—  r1  r5   rì  rî  rö  r›   r/  r0  r8  )r#   Úfeature_tagsr2   rï  rô  s        r   Úsubset_feature_tagsr?  Œ  sØ   € à‡z�z×Òô " $§*¡*×"8Ñ"8×"FÑ"FÓG÷
á��1Ø�|‰|˜|Ñ+ò ð
ˆñ 
ð
 	�
‰
×Ñ×.Ñ.¨Ô?Ü�4—:‘:Ð2°DÔ9Ø�J‰J×(Ñ(×8Ñ8¸ÕIàˆØ‡z�z×ÒØ�
‰
×Ñ×-Ñ-Ø˜T×6Ñ6Ó8õ	
ð ùó
s   ÁDc                 óP  — i }t        «       }|D ]v  }d|v r|j                  d«      n|df\  }}|j                  |j                  d«      «       |j	                  |t        «       «      j                  |j                  d«      «       Œx | j
                  j                  �r~| j
                  j                  j                  D �cg c]  }|j                  |v sŒ|‘Œ c}| j
                  j                  _        t        | j
                  j                  j                  «      | j
                  j                  _
        | j
                  j                  j                  D ]Â  }|j                  |v sŒd||j                     vsŒ$|j                  j                  D �	cg c]  }	|	j                  ||j                     v r|	‘Œ! c}	|j                  _        t        |j                  j                  «      |j                  _        d||j                     vsŒ²d |j                  _        ŒÄ y y c c}w c c}	w )Nú.r   é   z*   Údflt)r9   Úsplitr›  ÚljustÚ
setdefaultr—  r0  r  r  r.   r  r  r  Ú
LangSysTagr  r  )
r#   ÚtagsÚlangsysÚscript_tagsÚtagÚ
script_tagÚlang_tagr`   Úrecordr/   s
             r   Úsubset_script_tagsrO  Ÿ  s»  € à€GÜ“%€KØò EˆØ14¸±˜sŸy™y¨œ~À#ÀsÀÑˆ
�HØ�‰˜
×(Ñ(¨Ó+Ô,Ø×Ñ˜:¤s£uÓ-×1Ñ1°(·.±.ÀÓ2CÕDðEð
 ‡z�z×Óà—z‘z×,Ñ,×9Ñ9ö.
Ø¸Q¿[¹[ÈKÒ=WŠAò.
ˆ�
‰
×ÑÔ*ô -0°·
±
×0EÑ0E×0RÑ0RÓ,Sˆ�
‰
×ÑÔ)à—j‘j×+Ñ+×8Ñ8ò 		8ˆFØ×Ñ 7Ò*¨v¸WÀV×EUÑEUÑ=VÒ/Vð $Ÿ]™]×8Ñ8ö/àØ—|‘| w¨v×/?Ñ/?Ñ'@Ñ@ò ò/�—‘Ô+ô
 .1°·±×1LÑ1LÓ-M�—‘Ô*Ø ¨×)9Ñ)9Ñ!:Ò:Ø37�F—M‘MÕ0ñ		8ð ùò.
ùò/s   ÃHÃHÆ$H#c                 ó  — | j                   j                  r%| j                   j                  j                  «       }ng }| j                   j                  r%| j                   j                  j	                  |«       t        | j                   dd«      r%| j                   j                  j	                  |«       | j                   j                  r5| j                   j                  j	                  || j                  «       «       yy)zRemove unreferenced featuresr/  N)r—  r0  r  r1  rö  r›   r/  r8  ró  s     r   Úprune_featuresrQ  º  s´   € ð ‡z�z×ÒØŸ*™*×/Ñ/×@Ñ@ÓB‰àˆØ‡z�z×ÒØ�
‰
×Ñ×.Ñ.¨Ô?Üˆt�z‰zÐ.°Ô5Ø�
‰
×$Ñ$×4Ñ4°_ÔEØ‡z�z×ÒØ�
‰
×Ñ×-Ñ-Ø˜T×6Ñ6Ó8õ	
ð r'   c                 óÌ   — d|j                   vr| j                  |j                   «       d|j                  vr| j                  |j                  «       | j	                  d¬«       y)Nr   Fr°   T)Úlayout_scriptsrO  Úlayout_featuresr?  r<  r  s      r   Úprune_pre_subsetrU  Ë  s\   € ð �'×(Ñ(Ñ(Ø×Ñ × 6Ñ 6Ô7Ø
�'×)Ñ)Ñ)Ø× Ñ  ×!8Ñ!8Ô9à×Ñ˜UÐÔ#Ør'   c                 ó  — | j                   }|j                  r|j                  sy |j                  j                  }|j                  j                  D �]0  }|j
                  j                  }|sŒ|j
                  j                  d d  D ]ø  }|j                  }t        |j                  «      t        |j                  «      k7  rŒ;|j                  dk(  |j                  dk(  k7  rŒ[|j                  dk7  r ||j                     ||j                     k7  rŒŠt        t        |j                  «      «      D ])  }||j                  |      ||j                  |      k7  sŒ) ŒÓ |j
                  j                  j                  |«       Œú �Œ3 y r	  )r—  r0  r1  rì  r  r  r  r  r  r.   rù  r  rœ  Úremove)r#   r—  Úfeaturesr`   r*   Úlrr/   r2   s           r   Úremove_redundant_langsysrZ  ×  sR  € à�J‰J€EØ×Ò 5×#4Ò#4Øà× Ñ ×.Ñ.€Hà×Ñ×*Ñ*ó 2ˆØ�H‰H×#Ñ#ˆÙØØ—(‘(×(Ñ(©Ð+ò 	2ˆBØ—
‘
ˆAä�1—>‘>Ó"¤c¨!¯.©.Ó&9Ò9ØØ×!Ñ! UÑ*°×0AÑ0AÀUÑ0JÒKØà× Ñ  EÒ)Ø˜A×-Ñ-Ñ.°(¸1×;LÑ;LÑ2MÒMØäœ3˜qŸ~™~Ó.Ó/ò 2�Ø˜AŸN™N¨1Ñ-Ñ.°(¸1¿>¹>È!Ñ;LÑ2MÓMÙð2ð
 —‘×&Ñ&×-Ñ-¨bÕ1ò#	2ñ	2r'   c                 óÐ  — | j                   }| j                  «        |j                  r|j                  j                  ||«       |j                  sd |_        |j                  r | j                  «        | j                  «        t        |d«      rW|j                  r)|j                  r|j                  j                  sd |_        |j                  s|j                  dk(  rd|_
        y)Nr/  i  é   T)r—  r<  r˜  r®   r1  rZ  rQ  r}  r/  rþ  ÚVersion©r#   r%   r­   r—  s       r   r®   r®   ÷  s¿   € à�J‰J€Eà×ÑÔà×ÒØ×Ñ×*Ñ*¨4°Ô9ð ×ÒØ ˆÔà×ÒØ×%Ñ%Ô'à×ÑÔô ˆuÐ)Ô*à×"Ò"Ø×Ò %×"9Ñ"9×"PÒ"Pà&*ˆEÔ#ð ×&Ò&¨5¯=©=¸JÒ+FØ&ˆEŒMàr'   ÚGDEFc                 ó¨  — |j                   }| j                  }|j                  r‚|j                  j                  j	                  |«      }t        |j                  j                  |«      |j                  _        t        |j                  j                  «      |j                  _        |j                  rL|j                  j                  j                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}|j                  _
        |j                  rL|j                  j                  j                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}|j                  _
        |j                  r¥|j                  j                  j	                  |«      }|j                  j                  }|D �cg c]!  }||k  sŒ	|j                  j                  |   ‘Œ# c}|j                  _        t        |j                  j                  «      |j                  _        t!        |d«      r£|j"                  r—|j"                  }	|	j                  D ]  }
|
sŒ|
j	                  |«       Œ t%        |	j                  «      D ��cg c]  \  }}|j&                  sŒ|‘Œ c}}|_        |	j                  D �cg c]  }|j&                  sŒ|‘Œ c}|	_        yc c}}w c c}}w c c}w c c}}w c c}w )NÚMarkGlyphSetsDefT)r5  r—  ÚLigCaretListrˆ   r=   r3   ry   r.   ÚLigGlyphCountÚMarkAttachClassDefrE   rI   ÚGlyphClassDefÚ
AttachListrŽ   ÚAttachPointr}  ra  r5   r$   rÉ  )r#   r`   r$   r—  r0   r   rJ   rŽ   r2   ÚmarkGlyphSetsÚcoveragerw   s               r   re   re   &  sE  € à�_‰_€FØ�J‰J€EØ×ÒØ×$Ñ$×-Ñ-×4Ñ4°VÓ<ˆÜ&2°5×3EÑ3E×3NÑ3NÐPWÓ&Xˆ×ÑÔ#Ü+.¨u×/AÑ/A×/JÑ/JÓ+Kˆ×ÑÔ(Ø×Òà"×5Ñ5×?Ñ?×EÑEÓG÷.
Ù�Q˜È1ÐPVÊ;ˆAˆq‰Dó.
ˆ× Ñ Ô*ð ×Òà"×0Ñ0×:Ñ:×@Ñ@ÓB÷)
Ù�Q˜ÀaÈ6ÂkˆAˆq‰Dó)
ˆ×ÑÔ%ð ×ÒØ×"Ñ"×+Ñ+×2Ñ2°6Ó:ˆØ×%Ñ%×0Ñ0ˆ
à5<ö(
Ø01ÀÀJÃˆE×Ñ×(Ñ(¨Ó+ò(
ˆ×ÑÔ$ô '*¨%×*:Ñ*:×*FÑ*FÓ&Gˆ×ÑÔ#ÜˆuÐ(Ô)¨e×.DÒ.DØ×.Ñ.ˆØ%×.Ñ.ò 	(ˆHÚØ—‘ Õ'ð	(ô +4°M×4JÑ4JÓ*K×X¡$ ! QÈqÏxËxšAÓXˆÔØ-:×-CÑ-CÖ!P¨ÀqÇxÃx¢!Ò!PˆÔàùó/.
ùó)
ùò(
ùó YùÚ!Ps<   ÃJ8Ã'J8Ä2J>Ä?J>Æ"
KÆ-KÉ)K	É>K	ÊKÊ+Kc                 óf  — d| vry | d   }|j                   }t        |d«      sy |j                  }t        «       }|j	                  |«       d| v r| d   j                   j	                  |«       |j                  |«      }|j                  |«       d| v r| d   j                   j                  |«       y y )Nr_  ÚVarStorer3  )r—  r}  rk  r9   Úcollect_device_varidxesÚsubset_varidxesÚremap_device_varidxes)r%   Úgdefr—  ÚstoreÚusedVarIdxesÚ
varidx_maps         r   Ú
_pruneGDEFrs  I  s±   € Ø�TÑØØ�‰<€DØ�J‰J€EÜ�5˜*Ô%Øà�N‰N€Eä“5€Lð 
×!Ñ! ,Ô/Ø��~ØˆV‰×Ñ×2Ñ2°<Ô@ð ×&Ñ& |Ó4€Jð 
×Ñ 
Ô+Ø��~ØˆV‰×Ñ×0Ñ0°Õ<ð r'   c                 ó~  — | 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«      r:t        |«       |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                  xsf |j                  xsX |j
                  xsJ |j                  xs< |j                  dk\  xr |j                  xs |j                  dk\  xr |j                  «      S )Nrk  r   i  i  ra  r\  )r—  rb  rc  rd  rE   re  rf  rŽ   r}  rs  rk  ÚVarDataCountr]  ra  rˆ   rc   r^  s       r   r®   r®   c  sx  € à�J‰J€Eà×Ò %×"4Ñ"4×"BÒ"BØ!ˆÔØ×Ò¨×(@Ñ(@×(JÒ(JØ#'ˆÔ Ø×Ò 5×#6Ñ#6×#@Ò#@Ø"ˆÔØ×Ò × 0Ñ 0× ;Ò ;ØˆÔÜˆu�jÔ!Ü�4ÔØ�>‰>×&Ñ&¨!Ò+Ø�}‰} 
Ò*Ø *�”ä�EÐ-Ô.Ø×%Ò%Ø×%Ñ%×.Ò.à!%ˆÔØ�=‰=˜JÒ&Ø&ˆEŒMÜØ×Ñò 	<Ø×#Ñ#ò	<à×Ñò	<ð ×Ñò	<ð �M‰M˜ZÑ'ÒB¨E×,BÑ,Bò		<ð
 �M‰M˜ZÑ'Ò:¨E¯N©Nóð r'   Úkernc                 óŽ   — | j                   D �cg c]  }t        |d«      sŒ|‘Œ c}| _         t        | j                   «      S c c}w )NÚ	kernTable)Ú
kernTablesr}  rc   ©r#   r%   r­   Úts       r   rU  rU  †  s8   € ð #'§/¡/ÖM˜Q´W¸QÀÕ5L’qÒM€D„OÜ�—‘Ó Ð ùò Ns
   �A¡Ac           	      óZ  — |j                   }| j                  D ]D  }|j                  j                  «       D ���ci c]  \  \  }}}||v r	||v r||f|“Œ c}}}|_        ŒF | j                  D �cg c]  }|j                  sŒ|‘Œ c}| _        t	        | j                  «      S c c}}}w c c}w r   )r5  ry  rx  rI   rc   )r#   r`   r$   r{  rð   rí   rJ   s          r   re   re   �  s¡   € à�_‰_€FØ�_‰_ò 
ˆð Ÿ[™[×.Ñ.Ó0÷
ð 
á‘��A˜Ø�F‰{˜q F™{ð �ˆF�A‰Iô
ˆ�ð
ð #'§/¡/ÖA˜Q°Q·[³[’qÒA€D„OÜ�—‘Ó Ð ùô
ùò
 Bs   ºB!
Á.B(Â B(Úvmtxc                 ó¶   — t        | j                  |j                  «      | _        |j                  D ]  }d| j                  |<   Œ t	        | j                  «      S )N©r   r   )r+   Úmetricsr$   Úglyphs_emptiedrc   ©r#   r`   r   s      r   re   re   š  sI   € ä §¡¨a¯h©hÓ7€D„LØ×Ñò !ˆØ ˆ�‰�QŠð!ä�—‘ÓÐr'   Úhmtxc                 óŽ   — t        | j                  |j                  «      | _        |j                  D ]  }d| j                  |<   Œ y)Nr  T)r+   r€  r$   r�  r‚  s      r   re   re   ¢  s=   € ä §¡¨a¯h©hÓ7€D„LØ×Ñò !ˆØ ˆ�‰�QŠð!àr'   Úhdmxc           	      ó.  — | j                   j                  «       D ��ci c]  \  }}|t        ||j                  «      “Œ c}}| _         | j                   D ]%  }|j                  D ]  }d| j                   |   |<   Œ Œ' t        | j                   «      S c c}}w rS  )r…  rI   r+   r$   r�  rc   )r#   r`   Úszr/   r   s        r   re   re   ª  sƒ   € à<@¿I¹I¿O¹OÓ<M×N±5°2°q�”\ ! Q§X¡XÓ.Ñ.ÓN€D„IØ�i‰iò !ˆØ×!Ñ!ò 	!ˆAØ ˆD�I‰I�b‰M˜!Òñ	!ð!ô �—	‘	‹?Ðùó	 Os   ž!BÚankrc                 ó&  — | j                   j                  }|j                  dk(  sJ d|j                  z  «       ‚|j                  D �ci c]!  }||j                  v sŒ||j                  |   “Œ# c}|_        t        |j                  «      dkD  S c c}w )Nr   zunknown 'ankr' format %s)r—  ÚAnchorPointsr‡   r$   ÚAnchorsr.   ©r#   r`   r—  rg   s       r   re   re   ³  s�   € à�J‰J×#Ñ#€EØ�<‰<˜1ÒÐGÐ8¸5¿<¹<ÑGÓGÐà12·±öØ(-¸UÀeÇmÁmÒ=Sˆˆu�}‰}˜UÑ#Ñ#ò€E„Mô ˆu�}‰}Ó Ñ!Ð!ùòs   ÁBÁBÚbslnc                 ó˜   — | j                   j                  }|j                  dv r&|j                  j	                  |j
                  «       y y )N)r‘   r’   )r—  ÚBaseliner‡   r$   r›  ÚStandardGlyph)r#   r`   r—  s      r   ra   ra   ½  s8   € à�J‰J×Ñ€EØ‡|�|�vÑØ	�‰�‰�U×(Ñ(Õ)ð r'   c                 ó  — | j                   j                  }|j                  dv rÙ|j                  D �ci c])  }||j                  j                  ||j                  «      “Œ+ }}t        |«      dkD  r^t        |j                  «       «      j                  d«      d   \  }}||_        |j                  «       D ��ci c]  \  }}||k7  sŒ||“Œ }}}t        |«      dkD  r||_        ydddœ|j                     |_        |`yc c}w c c}}w )N)r€   r’   r   r€   r‘   T)r—  r�  r‡   r$   ÚBaselineValuesr¿  ÚDefaultBaseliner.   r   rT   Úmost_commonrI   )r#   r`   r—  rg   Ú	baselinesÚ
mostCommonÚ_cntrí   s           r   re   re   Ä  s  € à�J‰J×Ñ€EØ‡|�|�vÑð Ÿ™ö
àð �5×'Ñ'×+Ñ+¨E°5×3HÑ3HÓIÑIð
ˆ	ð 
ô ˆy‹>˜AÒÜ& y×'7Ñ'7Ó'9Ó:×FÑFÀqÓIÈ!ÑLÑˆJ˜Ø$.ˆEÔ!Ø2;·/±/Ó2C×W¡h e¨QÀqÈJÃ˜ ™ÐWˆIÑWÜˆy‹>˜AÒØ#,ˆEÔ ð ð  ! Q™<¨¯©Ñ5ˆEŒLØÐ$Øùò
ùó Xs   ³.C?Â9DÃDÚlcarc                 ó$  — | j                   j                  }|j                  dv rT|j                  D �ci c]!  }||j                  v sŒ||j                  |   “Œ# c}|_        t        |j                  «      dkD  S J d|j                  z  «       ‚c c}w )N)r   r€   r   zunknown 'lcar' format %s)r—  ÚLigatureCaretsr‡   r$   ÚCaretsr.   rŒ  s       r   re   re   Ø  s€   € à�J‰J×%Ñ%€EØ‡|�|�vÑà45·H±Hö
Ø+0ÀÈÏÉÒ@UˆE�5—<‘< Ñ&Ñ&ò
ˆŒô �5—<‘<Ó  1Ñ$Ð$à?Ð0°5·<±<Ñ?Ó?ˆuùò
s   ³BÁBÚgvarc                 ól   — |j                   r(|j                  sg | j                  |j                  d   <   y©Nr   T)Únotdef_glyphÚnotdef_outlineÚ
variationsÚ
glyphOrderr  s      r   rU  rU  ä  s-   € à×Ò G×$:Ò$:Ø.0ˆ�‰˜Ÿ™¨Ñ*Ñ+Ør'   c                 óª   — t        | j                  |j                  «      | _        t        | j                  «      | _        t        | j                  «      S r   )r+   r¡  r$   r.   Ú
glyphCountrc   r¸  s     r   re   re   ë  s7   € ä" 4§?¡?°A·H±HÓ=€D„OÜ˜$Ÿ/™/Ó*€D„OÜ�—‘Ó Ð r'   c                 ó  — |j                   j                  «       D ��ci c]  \  }}|||   “Œ }}}||j                   | j                        }| j                  j                  «       D ]  \  }}|| j                  kD  r|nd||<   Œ |S c c}}w rS  )r^   rI   Úlast_retained_glyphÚreverseEmptiedGlyphMapÚlast_retained_order)	r`   rr  Ú	table_mapr†  rJ   Úmap_Úlast_idxr   r2   s	            r   Ú_remap_index_mapr¬  ò  s“   € Ø)2×):Ñ):×)@Ñ)@Ó)B×C¡  AˆAˆz˜!‰}ÑÐC€DÑCð ˜)×+Ñ+¨A×,AÑ,AÑBÑC€HØ×(Ñ(×.Ñ.Ó0ò ?‰ˆˆ1Ø !×"7Ñ"7Ò7‘(¸QˆˆQŠð?à€Kùó Ds   žBÚHVARc                 ó   — | j                   }t        «       }t        «       }d}|j                  rmt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       nO|j                  |j                  j                  «       «       |j                  «       }|j                  j                  }|j                  rlt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       |j                  rlt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       |j                  j                  |||¬«      }|j                  r&t!        |||j                  «      |j                  _        |j                  r&t!        |||j                  «      |j                  _        |j                  r&t!        |||j                  «      |j                  _        y©NF)ÚretainFirstMapÚadvIdxesT)r—  r9   ÚAdvWidthMapr+   r^   r$   r]   rT   ÚreverseOrigGlyphMapÚcopyr­   Úretain_gidsÚLsbMapÚRsbMaprk  rm  r¬  ©r#   r`   r—  ÚusedÚ	advIdxes_ÚretainAdvMaprr  s          r   re   re   ý  s½  € à�J‰J€Eä‹5€DÜ“€IØ€Là×ÒÜ$0°×1BÑ1B×1JÑ1JÈAÏHÉHÓ$Uˆ×ÑÔ!Ø�‰�E×%Ñ%×-Ñ-×4Ñ4Ó6Õ7à�‰�A×)Ñ)×0Ñ0Ó2Ô3Ø—I‘I“Kˆ	Ø—y‘y×,Ñ,ˆà‡|‚|Ü+¨E¯L©L×,@Ñ,@À!Ç(Á(ÓKˆ�‰ÔØ�‰�E—L‘L×(Ñ(×/Ñ/Ó1Ô2Ø‡|‚|Ü+¨E¯L©L×,@Ñ,@À!Ç(Á(ÓKˆ�‰ÔØ�‰�E—L‘L×(Ñ(×/Ñ/Ó1Ô2à—‘×/Ñ/Ø˜\°Ið 0ó €Jð ×ÒÜ$4°Q¸
ÀE×DUÑDUÓ$Vˆ×ÑÔ!Ø‡|‚|Ü/°°:¸u¿|¹|ÓLˆ�‰ÔØ‡|‚|Ü/°°:¸u¿|¹|ÓLˆ�‰Ôð r'   ÚVVARc                 ót  — | j                   }t        «       }t        «       }d}|j                  rmt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       nO|j                  |j                  j                  «       «       |j                  «       }|j                  j                  }|j                  rlt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       |j                  rlt        |j                  j                  |j
                  «      |j                  _        |j                  |j                  j                  j                  «       «       |j                  rlt        |j                  j                  |j
                  «      |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                  _        yr¯  )r—  r9   ÚAdvHeightMapr+   r^   r$   r]   rT   r³  r´  r­   rµ  ÚTsbMapÚBsbMapÚVOrgMaprk  rm  r¬  r¸  s          r   re   re   #	  s$  € à�J‰J€Eä‹5€DÜ“€IØ€Là×ÒÜ%1°%×2DÑ2D×2LÑ2LÈaÏhÉhÓ%Wˆ×ÑÔ"Ø�‰�E×&Ñ&×.Ñ.×5Ñ5Ó7Õ8à�‰�A×)Ñ)×0Ñ0Ó2Ô3Ø—I‘I“Kˆ	Ø—y‘y×,Ñ,ˆà‡|‚|Ü+¨E¯L©L×,@Ñ,@À!Ç(Á(ÓKˆ�‰ÔØ�‰�E—L‘L×(Ñ(×/Ñ/Ó1Ô2Ø‡|‚|Ü+¨E¯L©L×,@Ñ,@À!Ç(Á(ÓKˆ�‰ÔØ�‰�E—L‘L×(Ñ(×/Ñ/Ó1Ô2Ø‡}‚}Ü ,¨U¯]©]×-BÑ-BÀAÇHÁHÓ Mˆ�‰ÔØ�‰�E—M‘M×)Ñ)×0Ñ0Ó2Ô3à—‘×/Ñ/Ø˜\°Ið 0ó €Jð ×ÒÜ%5°a¸ÀU×EWÑEWÓ%Xˆ×ÑÔ"Ø‡|‚|Ü/°°:¸u¿|¹|ÓLˆ�‰ÔØ‡|‚|Ü/°°:¸u¿|¹|ÓLˆ�‰ÔØ‡}‚}Ü 0°°JÀÇÁÓ Nˆ�‰Ôð r'   ÚVORGc                 óÈ   — | j                   j                  «       D ��ci c]  \  }}||j                  v sŒ||“Œ c}}| _         t        | j                   «      | _        yc c}}w rÕ   )ÚVOriginRecordsrI   r$   r.   ÚnumVertOriginYMetricsrd   s       r   re   re   N	  sZ   € ð ×,Ñ,×2Ñ2Ó4÷Ù��A¸¸Q¿X¹Xºˆˆ1‰ó€DÔô "% T×%8Ñ%8Ó!9€DÔØùó	s
   žAµAÚopbdc                 óò  — | j                   j                  }|j                  dk(  rS|j                  D �ci c]   }||j                  v r||j                  |   “Œ" c}|_        t        |j                  «      dkD  S |j                  dk(  rS|j                  D �ci c]   }||j                  v r||j                  |   “Œ" c}|_        t        |j                  «      dkD  S J d|j                  z  «       ‚c c}w c c}w )Nr   r€   zunknown 'opbd' format %s)r—  ÚOpticalBoundsr‡   r$   ÚOpticalBoundsDeltasr.   ÚOpticalBoundsPointsrŒ  s       r   re   re   W	  sõ   € à�J‰J×$Ñ$€EØ‡|�|�qÒð Ÿ™ö%
àØ˜×1Ñ1Ñ1ð �5×,Ñ,¨UÑ3Ñ3ò%
ˆÔ!ô
 �5×,Ñ,Ó-°Ñ1Ð1Ø	�‰˜Ò	ð Ÿ™ö%
àØ˜×1Ñ1Ñ1ð �5×,Ñ,¨UÑ3Ñ3ò%
ˆÔ!ô
 �5×,Ñ,Ó-°Ñ1Ð1à?Ð0°5·<±<Ñ?Ó?ˆuùò%
ùò%
s   ´%C/Â%C4Úpostc                 ó*   — |j                   sd| _        y)Nç      @T)Úglyph_namesÚ
formatTyper  s      r   rU  rU  l	  s   € à×ÒØˆŒØr'   c                 ó   — g | _         yrÕ   )Ú
extraNamesr¸  s     r   re   re   s	  s   € à€D„OØr'   Úpropc                 ó   — | j                   j                  }|j                  dk(  r|j                  dk7  S |j                  dk(  rí|j                  D �ci c])  }||j
                  j                  ||j                  «      “Œ+ c}|_        t        |j
                  j                  «       «      j                  d«      d   \  }}||_        |j
                  j                  «       D ��ci c]  \  }}||k7  sŒ||“Œ c}}_        t        |j
                  «      dk(  r|`d|_        |j                  dk7  S yJ d|j                  z  «       ‚c c}w c c}}w )Nr   r€   Tzunknown 'prop' format %s)r—  ÚGlyphPropertiesr‡   ÚDefaultPropertiesr$   Ú
Propertiesr¿  r   rT   r”  rI   r.   )r#   r`   rÒ  r   r–  r—  s         r   re   re   y	  s+  € à�:‰:×%Ñ%€DØ‡{�{�aÒØ×%Ñ%¨Ñ*Ð*Ø	�‰˜Ò	àGHÇxÁxö
ØBCˆAˆt�‰×"Ñ" 1 d×&<Ñ&<Ó=Ñ=ò
ˆŒô # 4§?¡?×#9Ñ#9Ó#;Ó<×HÑHÈÓKÈAÑNÑˆ
�DØ!+ˆÔà#'§?¡?×#8Ñ#8Ó#:÷
Ù˜˜4¸dÀjÓ>PˆAˆt‰Gó
ˆŒô ˆt�‰Ó 1Ò$Ø�ØˆDŒKØ×)Ñ)¨QÑ.Ð.Øà>Ð0°4·;±;Ñ>Ó>ˆuùò
ùó

s   Á.EÃ$E
Ã2E
c                 óJ   ‡— t        «       Šˆfd„}| j                  ||«       ‰S )Nc                 ó¾   •— | j                   t        j                  j                  t        j                  j                  hv r‰j                  | j                  «       y y r   )r‡   r   ÚPaintFormatÚ
PaintGlyphÚPaintColrGlyphr›  ÚGlyph)ÚpaintÚresults    €r   Úcallbackz$_paint_glyph_names.<locals>.callback“	  sI   ø€ Ø�<‰<Ü× Ñ ×+Ñ+Ü× Ñ ×/Ñ/ð
ñ 
ð �J‰J�u—{‘{Õ#ð	
r'   )r9   Útraverse)rÝ  Úcolrrß  rÞ  s      @r   Ú_paint_glyph_namesrâ  �	  s$   ø€ Ü‹U€Fô$ð 
‡N�N�4˜Ô"Ø€Mr'   ÚCOLRc                 ó¸  — | j                   dkD  rh| j                  | j                  «      | _        | j                  j                  j
                  D �ci c]  }|j                  |j                  “Œ c}| _        |j                  }|rÐt        «       }|D ]‘  }| j                  j                  |g «      D ]  }|j                  |j                  «       Œ | j                   dkD  sŒO| j                  j                  |«      }|€Œm|j                  t        || j                  «      «       Œ“ ||j                  z  }|j                  j                  |«       |}|rŒÏy y c c}w rS  )ÚversionÚ_decompileColorLayersV0r—  ÚColorLayersÚBaseGlyphListÚBaseGlyphPaintRecordÚ	BaseGlyphÚPaintÚColorLayersV1r$   r9   r¿  r›  rž   r]   râ  )r#   r`   rØ   Ú	decomposeÚlayersr   ÚlayerrÝ  s           r   ra   ra   ž	  s*  € à‡|�|�aÒð
  ×7Ñ7¸¿
¹
ÓCˆÔð —z‘z×/Ñ/×DÑDö
àð �M‰M˜3Ÿ9™9Ñ$ò
ˆÔð
 —‘€IÙ
Ü“ˆØò 	IˆAØ×)Ñ)×-Ñ-¨a°Ó4ò '�Ø—
‘
˜5Ÿ:™:Õ&ð'ð �|‰|˜aÓØ×*Ñ*×.Ñ.¨qÓ1�ØÑ$Ø—M‘MÔ"4°U¸D¿J¹JÓ"GÕHð	Ið 	�!—(‘(ÑˆØ	�‰�‰˜ÔØˆ	ô ùò
s   ÁEc                 ó.  — ddl m} ddlm}m} |j
                  |_        |j                  D �ci c]!  }|| j                  v sŒ|| j                  |   “Œ# c}| _        | j                  dk(  rt        | j                  «      S  || j                  j                  | j                  j                  «      } ||D �ci c]  }||j                  v sŒ|||   “Œ c}«      \  | j                  _        | j                  _        | `| j                  j                  �\| j                  j                  j                  }|D �ci c]  }||j                  v sŒ|||   “Œ c}| j                  j                  _        | j                  }| j                  j                  j                   sd| _        | `
t        |«      S  || j                  |D ��	ci c],  }|||   D �	cg c]  }	|	j"                  |	j$                  f‘Œ c}	“Œ. c}	}«       | `yc c}w c c}w c c}w c c}	w c c}	}w )Nr   )ÚunbuildColrV1)ÚbuildColrV1ÚpopulateCOLRv0T)ÚfontTools.colorLib.unbuilderrñ  ÚfontTools.colorLib.builderrò  ró  Úglyphs_colredr$   rç  rå  rc   r—  Ú	LayerListrè  rì  ÚClipListÚclipsré  rž   ÚcolorID)
r#   r`   rñ  rò  ró  r   ÚcolorGlyphsV1rù  ÚlayersV0rï  s
             r   re   re   ¼	  sÃ  € å:ßFð �‰€A„Hð )*¯©öØ#$°A¸×9IÑ9IÒ4Iˆˆ4×Ñ˜AÑÑò€DÔð ‡|�|�qÒÜ�D×$Ñ$Ó%Ð%á! $§*¡*×"6Ñ"6¸¿
¹
×8PÑ8PÓQ€MÙ5@Ø&3ÖE °q¸A¿H¹H²}ˆˆM˜!ÑÑ	ÒEó6Ñ2€D‡J�JÔ˜$Ÿ*™*Ô2ð 	Ðà‡z�z×ÑÐ&Ø—
‘
×#Ñ#×)Ñ)ˆØ:?Ö$Q°QÀ1ÈÏÉÂ= Q¨¨a©¡[Ò$Qˆ�
‰
×ÑÔ!à×Ñ€HØ�:‰:×#Ñ#×8Ò8àˆŒØˆJÜ�H‹~ÐáØ�
‰
ØLT×UÀqˆ°h¸q±kÖB¨Uˆe�j‰j˜%Ÿ-™-Ò(ÒBÑ	BÓUôð 	Ðð ùò=ùò 	Fùò %Rùò CùÓUs;   ®G=ÁG=Â7HÃHÄ7HÅHÇHÇHÇ-HÈHÚCPALc                 óÞ  ‡— d|v ry|j                  d«      }|syt        t        «      Šˆfd„}|j                  dk(  rE|j                  j                  «       D ]'  }|D ]   }‰|j                     j                  |«       Œ" Œ) n¤|j                  j                  rC|j                  j                  j                  D ]   }‰|j                     j                  |«       Œ" |j                  j                  j                  D ](  }|j                  j                  |j                  |«       Œ* t!        ‰j#                  «       «      dhz
  }| j$                  D ]A  }	t'        |	«      D �
�cg c]  \  }
}|
|v sŒ|‘Œ c}}
|	d d  t)        |	«      t)        |«      k(  rŒAJ ‚ t'        t+        |«      «      D ]A  \  }}‰|   D ]4  }t-        |d«      r||_        Œt-        |d	«      r||_        Œ+t/        |«      ‚ ŒC t)        | j$                  d   «      | _        | j                  d
k(  r<g }t'        | j2                  «      D ]  \  }
}|
|v sŒ|j                  |«       Œ || _        t5        | j0                  «      S c c}}
w )NzSVG Trã  Fc                 óè   •— t        | d«      r‰| j                     j                  | «       y t        | d«      r:| j                  j                  D ]   }‰|j                     j                  |«       Œ" y y )NÚPaletteIndexÚ	ColorLine)r}  r   r  r  Ú	ColorStop)rÝ  ÚstopÚcolors_by_indexs     €r   Úcollect_colors_by_indexz2prune_post_subset.<locals>.collect_colors_by_index 
  si   ø€ Ü�5˜.Ô)Ø˜E×.Ñ.Ñ/×6Ñ6°uÕ=Ü�U˜KÔ(ØŸ™×1Ñ1ò @�Ø × 1Ñ 1Ñ2×9Ñ9¸$Õ?ñ@ð )r'   r   r
  rú  r   r€   )r¿  r   rS   rå  rç  rT   rú  r  r—  ÚLayerRecordArrayÚLayerRecordr   rè  ré  rë  rà  r9   ÚkeysÚpalettesr5   r.   r!   r}  ÚAssertionErrorÚnumPaletteEntriesÚpaletteEntryLabelsrc   )r#   r%   r­   rá  r  rî  rï  rN  Úretained_palette_indicesÚpaletter2   rw   Ú	new_indexÚ	old_indexÚkept_labelsÚlabelr  s                   @r   r®   r®   ð	  sW  ø€ ð ��~Øà�8‰8�FÓ€DÙØä!¤$Ó'€Oô@ð ‡|�|�qÒØ×&Ñ&×-Ñ-Ó/ò 	=ˆFØò =�Ø §¡Ñ.×5Ñ5°eÕ<ñ=ñ	=ð �:‰:×&Ò&ØŸ™×4Ñ4×@Ñ@ò B�Ø × 2Ñ 2Ñ3×:Ñ:¸5ÕAðBà—j‘j×.Ñ.×CÑCò 	GˆFØ�L‰L×!Ñ! $§*¡*Ð.EÕFð	Gô
  # ?×#7Ñ#7Ó#9Ó:¸f¸XÑEÐØ—=‘=ò =ˆÜ$-¨gÓ$6×X™D˜A˜q¸!Ð?WÒ:W’aÓXˆ‘ˆ
Ü�7‹|œsÐ#;Ó<Ó<Ð<Ð<ð=ô !*¬&Ð1IÓ*JÓ Kò -Ñˆ	�9Ø% iÑ0ò 	-ˆFÜ�v˜yÔ)Ø!*�•Ü˜ Ô0Ø&/�Õ#ä$ VÓ,Ð,ñ	-ð-ô ! §¡¨qÑ!1Ó2€DÔà‡|�|�qÒØˆÜ! $×"9Ñ"9Ó:ò 	*‰HˆAˆuØÐ,Ò,Ø×"Ñ" 5Õ)ð	*ð #.ˆÔÜ�×&Ñ&Ó'Ð'ùó) Ys   Å!I)Å.I)c                 óö   — t        «       }| j                  D ]  }|j                  |j                  «       Œ | j                  r6| j                  j
                  D ]  }|j                  |j                  «       Œ |S r   )r9   ÚMathGlyphVariantRecordr›  ÚVariantGlyphÚGlyphAssemblyÚPartRecordsrg   )r#   r$   ÚvariantsrJ   r¾   s        r   ra   ra   -
  sg   € ä‹u€HØ×(Ñ(ò %ˆØ�‰�Q—^‘^Õ$ð%à×ÒØ×#Ñ#×/Ñ/ò 	"ˆAØ�L‰L˜Ÿ™Õ!ð	"à€Or'   c                 óä  — t        |j                  «      }t        «       }| j                  rO| j                  j	                  |«      }|D ]/  }|j                  | j                  |   j                  |«      «       Œ1 | j                  rO| j                  j	                  |«      }|D ]/  }|j                  | j                  |   j                  |«      «       Œ1 |j                  j                  |«       y r   )
r–  r$   r9   ÚVertGlyphCoverager6   r]   ÚVertGlyphConstructionra   ÚHorizGlyphCoverageÚHorizGlyphConstruction)r#   r`   r$   r  r0   r2   s         r   ra   ra   8
  sÏ   € ä�q—x‘xÓ €FÜ‹u€Hà×ÒØ×(Ñ(×2Ñ2°6Ó:ˆØò 	RˆAØ�O‰O˜D×6Ñ6°qÑ9×HÑHÈÓPÕQð	Rð ×ÒØ×)Ñ)×3Ñ3°FÓ;ˆØò 	SˆAØ�O‰O˜D×7Ñ7¸Ñ:×IÑIÈ&ÓQÕRð	Sð ‡H�H‡O�O�HÕr'   ÚVARCc                 ó8  — | j                   j                  j                  |j                  «      }t	        | j                   j
                  j                  |«      | j                   j
                  _        t        | j                   j
                  j                  «      S r   )r—  rˆ   r=   r$   r3   ÚVarCompositeGlyphsÚVarCompositeGlyphrc   ©r#   r`   r0   s      r   re   re   J
  si   € à�j‰j×!Ñ!×(Ñ(¨¯©Ó2€GÜ6BØ�
‰
×%Ñ%×7Ñ7¸ó7€D‡J�J×!Ñ!Ô3ô �—
‘
×-Ñ-×?Ñ?Ó@Ð@r'   c                 ó.  — | j                   j                  €y t        | j                   j                  j                  «      D ��ci c]  \  }}||“Œ
 }}}| j                   j                  j
                  }|j                  }t        «       }t        |«      }|ry|}	t        «       }|	D ]d  }||v rŒ|j                  |«      }
|
€Œ||
   }|j                  D ]5  }|j                  }|j                  |«       ||vsŒ%|j                  |«       Œ7 Œf |rŒxy y c c}}w r   )r—  r   r5   rˆ   r$   r!  r9   r¿  Ú
componentsÚ	glyphNamer›  )r#   r`   r2   r%  ÚglyphMapÚglyphRecordsr$   rÄ  ÚnewÚoldNewÚidxrg   Úcomprž   s                 r   ra   ra   S
  s  € à‡z�z×$Ñ$Ð,Øä1:¸4¿:¹:×;NÑ;N×;UÑ;UÓ1V×W¡  I�	˜1‘ÐW€HÑWØ—:‘:×0Ñ0×BÑB€Là�X‰X€FÜ‹e€GÜ
ˆf‹+€CÙ
ØˆÜ‹eˆØò 	"ˆIØ˜GÑ#ØØ—,‘,˜yÓ)ˆCØˆ{ØØ  Ñ%ˆEØ×(Ñ(ò "�Ø—~‘~�Ø—
‘
˜4Ô Ø˜wÒ&Ø—G‘G˜D•Mñ	"ð	"ô ùó Xs   ÁDc                 óÖ  — | j                   }|j                  }|�=t        «       }|j                  |«       |j	                  |«      }|j                  |«       |j                  j                  }|�ït        «       }|j                  j                  D ];  }	|	j                  D ]*  }
|
j                  €Œ|j                  |
j                  «       Œ, Œ= t        |«      }t        ||«      |j                  _        t        |«      D ��ci c]  \  }}||“Œ
 }}}|j                  j                  D ]4  }	|	j                  D ]#  }
|
j                  €Œ||
j                     |
_        Œ% Œ6 |j                   }|�ñ|j"                  }t        «       }|j                  j                  D ];  }	|	j                  D ]*  }
|
j$                  €Œ|j                  |
j$                  «       Œ, Œ= t        |«      }t        ||«      |_        t        |«      D ��ci c]  \  }}||“Œ
 }}}|j                  j                  D ]4  }	|	j                  D ]#  }
|
j$                  €Œ||
j$                     |
_        Œ% Œ6 yc c}}w c c}}w rÕ   )r—  ÚMultiVarStorer9   Úcollect_varidxesrm  Úremap_varidxesÚAxisIndicesListÚItemr   r!  r$  ÚaxisIndicesIndexr›  r!   r3   r5   ÚConditionListÚConditionTableÚconditionIndex)r#   r%   r­   r—  rp  rq  rr  ÚaxisIndicesListÚusedIndicesrg   r+  r(  Úoldr^   ÚconditionListÚconditionTabless                   r   r®   r®   o
  sa  € à�J‰J€Eà×Ñ€EØÐÜ“uˆØ×Ñ˜|Ô,Ø×*Ñ*¨<Ó8ˆ
Ø×Ñ˜ZÔ(à×+Ñ+×0Ñ0€OØÐ"Ü“eˆØ×-Ñ-×?Ñ?ò 	;ˆEØ×(Ñ(ò ;�Ø×(Ñ(Ñ4Ø—O‘O D×$9Ñ$9Õ:ñ;ð	;ô ˜[Ó)ˆÜ%1°/À;Ó%Oˆ×ÑÔ"Ü,5°kÓ,B×C¡  S�3˜‘8ÐCˆÑCØ×-Ñ-×?Ñ?ò 	KˆEØ×(Ñ(ò K�Ø×(Ñ(Ñ4Ø,3°D×4IÑ4IÑ,J�DÕ)ñKð	Kð
 ×'Ñ'€MØÐ Ø'×6Ñ6ˆÜ“eˆØ×-Ñ-×?Ñ?ò 	9ˆEØ×(Ñ(ò 9�Ø×&Ñ&Ñ2Ø—O‘O D×$7Ñ$7Õ8ñ9ð	9ô ˜[Ó)ˆÜ'3°OÀ[Ó'QˆÔ$Ü,5°kÓ,B×C¡  S�3˜‘8ÐCˆÑCØ×-Ñ-×?Ñ?ò 	GˆEØ×(Ñ(ò G�Ø×&Ñ&Ñ2Ø*1°$×2EÑ2EÑ*F�DÕ'ñGð	Gð
 ùó- Dùó  Ds   ÄIÈI%ÚMATHc                 ó|   — | j                   j                  r&| j                   j                  j                  |«       y y r   )r—  ÚMathVariantsra   r¸  s     r   ra   ra   œ
  s,   € à‡z�z×ÒØ�
‰
×Ñ×.Ñ.¨qÕ1ð r'   c                 óà   — | j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )rˆ   r=   r$   r3   ÚItalicsCorrectionr.   ÚItalicsCorrectionCountrc   r"  s      r   re   re   ¢
  sS   € à�m‰m×"Ñ" 1§8¡8Ó,€GÜ)¨$×*@Ñ*@À'ÓJ€DÔÜ"% d×&<Ñ&<Ó"=€DÔÜ�×+Ñ+Ó,Ð,r'   c                 óà   — | j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )ÚTopAccentCoverager=   r$   r3   ÚTopAccentAttachmentr.   ÚTopAccentAttachmentCountrc   r"  s      r   re   re   ª
  sU   € à×$Ñ$×+Ñ+¨A¯H©HÓ5€GÜ+¨D×,DÑ,DÀgÓN€DÔÜ$'¨×(@Ñ(@Ó$A€DÔ!Ü�×-Ñ-Ó.Ð.r'   c                 óà   — | j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )ÚMathKernCoverager=   r$   r3   ÚMathKernInfoRecordsr.   ÚMathKernCountrc   r"  s      r   re   re   ²
  sU   € à×#Ñ#×*Ñ*¨1¯8©8Ó4€GÜ+¨D×,DÑ,DÀgÓN€DÔÜ˜T×5Ñ5Ó6€DÔÜ�×"Ñ"Ó#Ð#r'   c                 óP  — | j                   r| j                   j                  |«       | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       | j                  r%| j                  j                  |j                  «       yrÕ   )ÚMathItalicsCorrectionInfore   ÚMathTopAccentAttachmentÚMathKernInfoÚExtendedShapeCoverager=   r$   r¸  s     r   re   re   º
  s}   € à×%Ò%Ø×&Ñ&×4Ñ4°QÔ7Ø×#Ò#Ø×$Ñ$×2Ñ2°1Ô5Ø×ÒØ×Ñ×'Ñ'¨Ô*Ø×!Ò!Ø×"Ñ"×)Ñ)¨!¯(©(Ô3Ør'   c                 óœ  — | j                   rZ| j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        | j                  rZ| j                  j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _	        yrÕ   )
r  r=   r$   r3   r  r.   ÚVertGlyphCountr  r  ÚHorizGlyphCountr"  s      r   re   re   Ç
  sœ   € à×ÒØ×(Ñ(×/Ñ/°·±Ó9ˆÜ%1°$×2LÑ2LÈgÓ%VˆÔ"Ü! $×"<Ñ"<Ó=ˆÔà×ÒØ×)Ñ)×0Ñ0°·±Ó:ˆÜ&2°4×3NÑ3NÐPWÓ&XˆÔ#Ü" 4×#>Ñ#>Ó?ˆÔàr'   c                 ó  — |j                   |_        | j                  j                  r%| j                  j                  j	                  |«       | j                  j
                  r%| j                  j
                  j	                  |«       yrÕ   )Úglyphs_mathedr$   r—  ÚMathGlyphInfore   r=  r¸  s     r   re   re   Ö
  sZ   € à�‰€A„HØ‡z�z×ÒØ�
‰
× Ñ ×.Ñ.¨qÔ1Ø‡z�z×ÒØ�
‰
×Ñ×-Ñ-¨aÔ0Ør'   Úglyfc                 óÆ  — | j                   r)t        j                  d| j                   d d «      d   dk\  ry 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  }|rŒˆy y )Nz>hr‘   r   é
   r€   é   r’   éÿ   rB  é@   é€   é    )ÚdataÚstructÚunpackÚ	bytearrayr«   )r#   Ú
glyphidmapr\  r2   ÚmoreÚflagsÚglyphIDs          r   ÚremapComponentsFastrd  à
  s  € à�9Š9œŸ™ d¨D¯I©I°b°q¨MÓ:¸1Ñ=ÀÒ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à�‰FˆAØ�6Š>Ø�‰F‰AØ�VŠ^Ø�‰F‰AØ�VŠ^Ø�‰FˆAØ�v‰~ˆô) r'   c                 ó  — | j                   }|j                   }|rrt        «       }|D ]3  }||vrŒ||   }|j                  | «      D ]  }|j                  |«       Œ Œ5 ||j                   z  }|j                   j	                  |«       |}|rŒqy y r   )r$   r9   ÚgetComponentNamesr›  r]   )r#   r`   ÚglyphSetrí  r$  r   Úglrw   s           r   ra   ra   þ
  s‘   € à�{‰{€HØ—‘€IÙ
Ü“Uˆ
Øò 	"ˆAØ˜Ñ ØØ˜!‘ˆBØ×)Ñ)¨$Ó/ò "�Ø—‘˜qÕ!ñ"ð		"ð 	�a—h‘hÑˆ
Ø	�‰�‰˜
Ô#Øˆ	ô r'   c                 óš   — |j                   r?|j                  s3| | j                  d      }|j                  j	                  «        d|_        y)Nr   r'   T)rŸ  r   r¢  Ú__dict__Úclearr\  )r#   r%   r­   r   s       r   rU  rU    s@   € à×Ò G×$:Ò$:Ø�—‘ Ñ#Ñ$ˆà	�
‰
×ÑÔØˆŒØr'   c                 óæ  — t        | j                  |j                  «      | _        |j                  j                  s‘t	        | j
                  «      D ��cg c]  \  }}||j                  v sŒ|‘Œ }}}t	        |«      D ��ci c]  \  }}||“Œ
 }}}| j                  j                  «       D ]   }t        |d«      sŒ|j                  |«       Œ" t        j                  d«      j                  }	|j                  D ]*  } |	«       | j                  |<   d| j                  |   _        Œ, | j
                  D �cg c]!  }||j                  v s||j                  v sŒ |‘Œ# c}| _        yc c}}w c c}}w c c}w )Nr\  rT  r'   T)r+   r$   r­   rµ  r5   r¢  rT   r}  rd  r   ÚgetTableModulerÜ  r�  r\  )
r#   r`   r2   r   r0   r&  ÚoÚglyphmaprJ   rÜ  s
             r   re   re     s6  € ä˜tŸ{™{¨A¯H©HÓ5€D„KØ�9‰9× Ò Ü!*¨4¯?©?Ó!;×M™˜˜A¸qÀAÇHÁHº}’1ÐMˆÑMÜ%.¨wÓ%7×8™T˜Q �A�q‘DÐ8ˆÑ8Ø—‘×#Ñ#Ó%ò 	0ˆAÜ�q˜&Õ!Ø×%Ñ% hÕ/ð	0ô × Ñ  Ó(×.Ñ.€EØ×Ñò "ˆÙ›ˆ�‰�A‰Ø!ˆ�‰�A‰Õð"ð —?‘?öØ a¨1¯8©8¡m°q¸A×<LÑ<LÒ7LŠò€D„Oð ùó NùÛ8ùòs   ÁE"Á+E"Â E(Ä3!E.ÅE.c                 ó€   — |j                    }| j                  j                  «       D ]  }|j                  |¬«       Œ y)N)Úremove_hintingT)r©   r$   rT   Útrim)r#   r%   r­   rq  rJ   s        r   r®   r®   -  s;   € à Ÿ™Ð(€NØ�[‰[×ÑÓ!ò .ˆØ	�‰˜nˆÕ-ð.àr'   Úcmapc                 óî  ‡
— | j                   D �cg c]  }|j                  «       sŒ|‘Œ }}|D ]ï  }|j                  dk(  r…|j                  j	                  «       D ]g  \  }Š
||j
                  vrŒ‰
D ��ch c]  \  }}||j
                  v sŒ|’Œ }}}d |v r|j                  d «       |j                  j                  |«       Œi Œ—|j                  Š
|j
                  j                  ‰
j                  «       «      }	|j                  j                  ˆ
fd„|	D «       «       Œñ |j
                  j                  «       |_        |D ]'  }|j                  j                  |j                  «       Œ) y c c}w c c}}w )Né   c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr   r   )r   Úurs  s     €r   r   z!closure_glyphs.<locals>.<genexpr>F  s   øè ø€ Ò:¨˜D �GÑ:ùr   )ÚtablesÚ	isUnicodeÚformatÚuvsDictrI   Úunicodes_requestedrW  r$   r]   rs  r·   r  r´  Úunicodes_missingÚdifference_update)r#   r`   r{  rx  r—  ÚvarSelectorrw  r   r$   r·   rs  s             @r   ra   ra   5  s@  ø€ àŸ™Ö6�A¨¯©­ŠaÐ6€FÐ6ð ò ;ˆØ�<‰<˜2ÒØ%*§]¡]×%8Ñ%8Ó%:ò (Ñ!�˜TØ a×&:Ñ&:Ñ:ØØ(,×J¡  1°°Q×5IÑ5IÒ0Iš!ÐJ�ÑJØ˜6‘>Ø—M‘M $Ô'Ø—‘—‘ Õ'ñ(ð —:‘:ˆDØ×/Ñ/×<Ñ<¸T¿Y¹Y»[ÓIˆLØ�H‰H�O‰OÓ:¨\Ô:Õ:ð;ð ×-Ñ-×2Ñ2Ó4€AÔØò 9ˆØ	×Ñ×,Ñ,¨U¯Z©ZÕ8ñ9ùò' 7ùó Ks   �E,¦E,Á4E1
ÂE1
c                 óÄ  — |j                   s@| j                  D �cg c]%  }|j                  «       s|j                  «       sŒ$|‘Œ' c}| _        |j                  s0| j                  D �cg c]  }|j                  «       rŒ|‘Œ c}| _        | j                  D �cg c]  }|j
                  dk7  sŒ|‘Œ c}| _        t        | j                  «      | _        yc c}w c c}w c c}w rž  )Úlegacy_cmaprx  ry  ÚisSymbolÚsymbol_cmaprz  r.   ÚnumSubTablesrz  s       r   rU  rU  N  sœ   € à×Òà"&§+¡+ÖO˜Q°·±´À!Ç*Á*Å,’qÒOˆŒØ×ÒØ"&§+¡+ÖB˜Q°Q·Z±Zµ\’qÒBˆŒð #Ÿk™kÖ;˜¨Q¯X©X¸«]’1Ò;€D„KÜ˜DŸK™KÓ(€DÔØùò PùâBùò <s#   ›%CÁCÁ'CÁ=CÂCÂ,C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(  r®|j                  j                  «       D ����	ci c]G  \  }}||j                  v r4||D ��	cg c]%  \  }}	|	|j                  v s||j                  v r||	f‘Œ' c}	}“ŒI c}	}}}|_        |j                  j                  «       D ��ci c]  \  }}|sŒ	||“Œ c}}|_        �Œ|j                  «       r©|j                  j                  «       D ��	ci c]$  \  }}	|	|j                  v s||j                  v r||	“Œ& c}	}|_        |j
                  dk(  s�Œ‹|j                  s�Œ™t        |j                  j                  «       «      dk  s�ŒÁ|j                  |«       �ŒÔ|j                  j                  «       D ��	ci c]  \  }}	|	|j                  v sŒ||	“Œ c}	}|_        �Œ |D ]ß  }|j                  dk(  r^|j                  dk(  rO|j                  |v rA||j                     j                  |j                  k(  r|j                  j                  «        Œp|j                  dk(  sŒ€|j                  dk(  sŒ�|j                  |v sŒŸ||j                     j                  |j                  k(  sŒÆ|j                  j                  «        Œá | j                  D �cg c].  }|j
                  dk7  r|j                  sŒn|j                  sŒ-|‘Œ0 c}| _        t!        | j                  «      | _        y	c c}	}w c c}	}}}w c c}}w c c}	}w c c}	}w c c}w )
Nr   r’   r€   ru  é   r\  rB  rV  T)r$   rx  Ú
platformIDÚ	platEncIDÚlanguagerz  r{  rI   r|  Úglyphs_requestedry  rs  Úmaxr  r  rk  r.   r„  )
r#   r`   Útables_format12_bmpÚtable_plat0_enc3Útable_plat3_enc1r{  rJ   r/   rw  r   s
             r   re   re   \  sú  € à€A„HàÐØÐØÐà�[‰[ó RˆØ�<‰<˜1Ò §¡°Ò!1Ø+,Ð˜QŸZ™ZÑ(Ø�<‰<˜1Ò §¡°Ò!1Ø+,Ð˜QŸZ™ZÑ(à�8‰8�rŠ>ð ŸI™IŸO™OÓ-÷ñ ñ �A�qØ˜×,Ñ,Ñ,ð à !÷á˜˜1Ø˜A×.Ñ.Ñ.°!°q×7KÑ7KÑ2Kð ˜’Fóñ õˆAŒIð +,¯)©)¯/©/Ó*;×A¡$ ! Qºq˜˜A™ÓAˆAŽIØ�[‰[Œ]ð ŸF™FŸL™L›N÷á�A�qØ˜×*Ñ*Ñ*¨a°1×3GÑ3GÑ.Gð �1‘óˆAŒFð �x‰x˜2Œ~ !§&¤&¬S°·±·±³Ó-?À'Ô-IØ#×*Ñ*¨1Ö-à'(§v¡v§|¡|£~×Q™t˜q !¸¸a×>PÑ>PÒ9P�a˜‘dÓQˆAŽFð?RðF !ò ˆà�L‰L˜AÒØ—‘˜qÒ Ø—
‘
Ð.Ñ.Ø  §¡Ñ,×1Ñ1°Q·V±VÒ;à�F‰F�L‰L�Nà�L‰L˜AÓØ—‘˜rÓ!Ø—
‘
Ð.Ò.Ø  §¡Ñ,×1Ñ1°Q·V±VÓ;à�F‰F�L‰L�Nðð  #Ÿk™kÖW˜¸¿¹ÀBº¨a¯f¬fÈAÏIËI’1ÒW€D„KÜ˜DŸK™KÓ(€DÔð ùó[ùõùó Bùóùó Rùò( XsH   Â&NÃ*M;Ã,NÄ
N	Ä%N	Å")NÈNÈ"NÌ% NÍNÍNÍ;NÚDSIGc                 ó    — d| _         g | _        yrž  )Ú	usNumSigsÚsignatureRecordsr  s      r   rU  rU  Ÿ  s   € ð €D„NØ€DÔØr'   Úmaxpc                 óœ   — |j                   s@| j                  dk(  r1d| _        d| _        d| _        d| _        d| _        d| _        d| _        y)Nr\  r€   r   T)	r©   ÚtableVersionÚmaxZonesÚmaxTwilightPointsÚ
maxStorageÚmaxFunctionDefsÚmaxInstructionDefsÚmaxStackElementsÚmaxSizeOfInstructionsr  s      r   rU  rU  §  sP   € à�?Š?Ø×Ñ 
Ò*ØˆDŒMØ%&ˆDÔ"ØˆDŒOØ#$ˆDÔ Ø&'ˆDÔ#Ø$%ˆDÔ!Ø)*ˆDÔ&Ør'   rž   c                 ó&  — t        «       }|j                  |«       t        |j                  «      |j                  z  }d|j                  v r7|| j
                  D �ch c]  }|j                  dk  sŒ|j                  ’Œ  c}z  }| j
                  D �cg c]  }|j                  |v sŒ|‘Œ c}| _        |j                  s0| j
                  D �cg c]  }|j                  «       sŒ|‘Œ c}| _        d|j                  vr8| j
                  D �cg c]  }|j                  |j                  v sŒ|‘Œ c}| _        |j                  r¿g }| j
                  D ]§  }|j                  dv r)|j                  «       rdj                  d«      nd|_        n]|j                  dv r)|j                  «       rdj                  d«      nd|_        n&|j                  dk(  rd	|_        n|j                  d
v rŒ—|j                  |«       Œ© || _        yc c}w c c}w c c}w c c}w )Nr   é   )r€   rB  z.Ú	utf_16_be)r‘   é   úr’   r  )é   é   é   T)r   Úvisitr9   Úname_IDsÚseenr#  ÚnameIDÚname_legacyry  Úname_languagesÚlangIDÚobfuscate_namesÚencodeÚstringr  )r#   r%   r­   ÚvisitorÚnameIDsr&  Únamerecss          r   r®   r®   µ  s�  € äÓ!€GØ‡M�M�$ÔÜ�'×"Ñ"Ó# g§l¡lÑ2€GØ
ˆg×ÑÑØ d§j¡jÖC °A·H±H¸s³N�A—H“HÒCÑCˆØ!ŸZ™ZÖ?˜¨1¯8©8°wÒ+>’!Ò?€D„JØ×Òð "&§¡Ö=˜A¨q¯{©{­}’aÒ=ˆŒ
à
�'×(Ñ(Ñ(à!%§¡ÖR˜A¨q¯x©x¸7×;QÑ;QÒ/Q’aÒRˆŒ
Ø×ÒØˆØ—‘ò 		ˆAØ�x‰x˜6Ñ!Ø:;¿+¹+¼-˜7Ÿ>™>¨+Ô6ÈW�•Ø—‘˜VÑ#Ø9:¿¹¼˜6Ÿ=™=¨Ô5ÈF�•Ø—‘˜Q’Ø�•Ø—‘˜\Ñ)ØØ�O‰O˜AÕð		ð ˆŒ
Øùò/ DùÚ?ùò >ùò Ss0   ÁG?Á0G?ÂHÂ%HÃH	Ã!H	Ä	HÄ'HÚheadc                  ó   — yrÕ   r   r  s      r   r®   r®   Õ  s   € ð r'   c                   ó  — 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	j                  «       «      g «      «      Zd„ Zd„ Zg fd„Zy)ÚOptionsc                   ó   — e Zd Zy)úOptions.OptionErrorN©rh  rx  ry  r   r'   r   ÚOptionErrorr·  é  ó   „ Ør'   r¹  c                   ó   — e Zd Zy)úOptions.UnknownOptionErrorNr¸  r   r'   r   ÚUnknownOptionErrorr¼  ì  rº  r'   r½  )ÚBASEÚJSTFr�  r'  r  ÚEBSCÚPCLTÚLTSH)ÚFeatÚGlatÚGlocÚSilfÚSill)ÚavarÚfvarÚgaspr²  Úhhear“  ÚvheaúOS/2Úlocarž   ÚcvtÚfpgmÚprepÚVDMXr�  rý  ÚMVARÚcvarÚSTAT)rÏ  rÔ  rÐ  rÑ  r…  rÒ  )ÚrvrnÚccmpÚligaÚloclÚmarkÚmkmkÚrlig)ÚfracÚnumrÚdnom)ÚcaltÚcligÚcursrv  Ú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        jJ                  | _&        d| _'        d| _(        d| _)        d| _*        d| _+        d| _,         | jZ                  di |¤Ž y )NFTr   )r   r€   r‘   r’   rB  é   r   i	  r¬  r   ).Ú_drop_tables_defaultÚdrop_tablesÚ_no_subset_tables_defaultÚno_subset_tablesÚpassthrough_tablesÚ_hinting_tables_defaultÚhinting_tablesÚlegacy_kernÚlayout_closureÚ_layout_features_defaultrT  rS  Úignore_missing_glyphsÚignore_missing_unicodesr©   rÎ  r�  rƒ  r¦  r©  rª  r¬  rµ  rŸ  r   Úrecommended_glyphsÚrecalc_boundsÚrecalc_timestampÚprune_unicode_rangesÚprune_codepage_rangesÚrecalc_average_widthÚrecalc_max_contextÚcanonical_orderÚflavorÚwith_zopfliÚdesubroutinizer   ÚdefaultÚharfbuzz_repackerÚverboseÚtimingÚxmlÚfont_numberÚ
pretty_svgÚlazyr9   )r#   Úkwargss     r   rw  zOptions.__init__J  s}  € Ø×4Ñ4±QÐ7ˆÔØ $× >Ñ >¹qÐ AˆÔØ"'ˆÔØ"×:Ñ:¹1Ð=ˆÔØ ˆÔØ"ˆÔØ#×<Ñ<¹QÐ?ˆÔØ"˜eˆÔØ%*ˆÔ"Ø'+ˆÔ$ØˆŒØ ˆÔØ ˆÔØ ˆÔò
ˆŒð !ˆÔØ%˜hˆÔØ$ˆÔØ ˆÔØ ˆÔØ#ˆÔØ"'ˆÔØ"ˆÔØ %ˆÔØ$(ˆÔ!Ø%)ˆÔ"Ø$)ˆÔ!Ø"'ˆÔØ#ˆÔØˆŒØ ˆÔØ#ˆÔÜ!6×!>Ñ!>ˆÔØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒ	àˆ�‰Ñ�6Ór'   c                 óŽ   — |j                  «       D ]2  \  }}t        | |«      s| j                  d|z  «      ‚t        | ||«       Œ4 y )NúUnknown option '%s')rI   r}  r½  rÓ   )r#   rE  r†  rJ   s       r   r9   zOptions.set}  sH   € Ø—L‘L“Nò 	 ‰DˆAˆqÜ˜4 Ô#Ø×-Ñ-Ð.CÀaÑ.GÓHÐHÜ�D˜!˜QÕñ	 r'   c                 ó¼  — g }g }|D �]I  }|}|j                  d«      s|j                  |«       Œ)|dd  }|j                  d«      }d}|dk(  r>|j                  d«      r|dd  }	|	dk(  rd }
nd}
n|}	d	}
|	j                  d
«      r)|	d d }	d
}
n!|d | }	|	d   dv r|	d   dz   }|	d d }	||dz   d  }
|	}|	j	                  dd«      }	t        | |	«      s.|d	u s||v r|j                  |«       Œß| j                  d|z  «      ‚t        | |	«      }|
d
k(  rt        d|›d|›�«       �Œt        |t        «      rt        |
«      }
�n	t        |t        «      rt        |
«      }
nít        |t        «      rt        |
«      }
nÑt        |t        «      rÁt        |
t        «      r| j                  d|z  «      ‚|
j	                  dd«      j                  «       }|dgk(  rg }|D �cg c]"  }t!        |«      r|d   dv rt        |d«      n|‘Œ$ }}|dk(  r|}
n@|dk(  r|}
|
j#                  |«       n'|dk(  r |}
|D ]  }||
v sŒ|
j%                  |«       Œ nJ ‚t'        | |	|
«       �ŒL ||z   S c c}w )Nz--r‘   ú=r¬  zno-r’   zcanonical-orderFTú?z-+r€   ú-Ú_rG  zCurrent setting for 'z' is: z5Option '%s' requires values to be specified using '='ú,ú r  r   Ú
0123456789z+=z-=)rj  r  Úfindri  Úreplacer}  r½  r›   Úprintræ  rc   r«   ÚstrrS   r¹  rD  r.   rá  rW  rÓ   )r#   ÚargvÚignore_unknownÚposargsÚpassthru_optionsrð   Úorig_ar2   Úopr†  rJ   ÚokÚovÚvvr1  s                  r   Ú
parse_optszOptions.parse_optsƒ  s£  € ØˆØÐØó F	 ˆAØˆFØ—<‘< Ô%Ø—‘˜qÔ!ØØ�!�"�ˆAØ—‘�s“ˆAØˆBØ�BŠwØ—<‘< Ô&Ø˜!˜"˜�AØÐ-Ò-ð !™à!™à�AØ�AØ—:‘:˜c”?Ø˜#˜2˜�AØ‘Aà�b�q�E�Ø�R‘5˜D‘=Ø˜2™ ™�BØ˜#˜2˜�AØ�a˜!‘e�g�J�ØˆBØ—	‘	˜#˜sÓ#ˆAÜ˜4 Ô#Ø! TÑ)¨R°>Ñ-AØ$×+Ñ+¨FÔ3Øà×1Ñ1Ð2GÈ!Ñ2KÓLÐLä˜˜qÓ!ˆBØ�CŠxÝº2¹rÐBÔCÙÜ˜"œdÔ#Ü˜“G’Ü˜B¤Ô$Ü˜“F‘Ü˜B¤Ô$Ü˜“F‘Ü˜B¤Ô%Ü˜a¤Ô&Ø×*Ñ*ØOÐRSÑSóð ð —Y‘Y˜s CÓ(×.Ñ.Ó0�Ø˜"˜’:Ø�BØSUÖVÈa¤3 q¤6¨a°©d°lÑ.B”c˜!˜Q”iÈÑIÐV�ÐVØ˜’9Ø‘AØ˜4’ZØ�AØ—H‘H˜R•LØ˜4’ZØ�AØò (˜Ø š6ØŸH™H Q�Kñ(ð !˜5ä�D˜!˜QÖðMF	 ðP Ð)Ñ)Ð)ùò! Ws   Ç'IN)rh  rx  ry  Ú	Exceptionr¹  r½  r&  r(  r+  Ú_layout_features_groupsr   rÓ  ÚiterrT   r/  rw  r9   r]  r   r'   r   rµ  rµ  è  sÇ   „ ô�iô ô˜[ô ò	Ðð ÒDÑDÐò!Ðò* NÐò
 KÚ-Ú>Ú<Ø˜ÐØ˜ÐØ�Ø�8Ú3Ú>ò
ò +Ú3ò
ñ72Ðñf  *Ù‰DÐ(×/Ñ/Ó1Ó2°BÓ7ó Ðò1òf ð /1ô 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y)Ú	Subsetterc                   ó   — e Zd Zy)úSubsetter.SubsettingErrorNr¸  r   r'   r   ÚSubsettingErrorrd  Ò  rº  r'   re  c                   ó   — e Zd Zy)ú&Subsetter.MissingGlyphsSubsettingErrorNr¸  r   r'   r   ÚMissingGlyphsSubsettingErrorrg  Õ  rº  r'   rh  c                   ó   — e Zd Zy)ú(Subsetter.MissingUnicodesSubsettingErrorNr¸  r   r'   r   ÚMissingUnicodesSubsettingErrorrj  Ø  rº  r'   rk  Nc                 ó„   — |s
t        «       }|| _        t        «       | _        t        «       | _        t        «       | _        y r   )rµ  r­   r9   r|  Úglyph_names_requestedÚglyph_ids_requested)r#   r­   s     r   rw  zSubsetter.__init__Û  s1   € ÙÜ“iˆGàˆŒÜ"%£%ˆÔÜ%(£UˆÔ"Ü#&£5ˆÕ r'   r  c                 ó˜  — | j                   j                  |«       t        |t        «      r|j	                  d«      }|j                  d«      }t        |«      dz  }t        j                  d|z  |«      D ]  }| j                   j                  |«       Œ | j                  j                  |«       | j                  j                  |«       y )NÚutf_8z	utf-32-berB  z>%dL)r|  r]   ræ  ÚbytesÚdecoder­  r.   r]  r^  r›  rm  rn  )r#   r$   ÚgidsÚunicodesÚtextÚ
text_utf32Úncharsrw  s           r   ÚpopulatezSubsetter.populateä  s¤   € Ø×Ñ×&Ñ& xÔ0Ü�dœEÔ"Ø—;‘;˜wÓ'ˆDØ—[‘[ Ó-ˆ
Ü�Z“ AÑ%ˆÜ—‘˜v¨™°
Ó;ò 	+ˆAØ×#Ñ#×'Ñ'¨Õ*ð	+à×"Ñ"×)Ñ)¨&Ô1Ø× Ñ ×'Ñ'¨Õ-r'   c                 óâ  — | j                  |«      D �]B  }|j                  «       | j                  j                  v s[|j                  «       | j                  j                  v r| j                  j
                  r|dk(  r4| j                  j                  sd|v rt        j                  d|«       ||= ŒŸt        j                  |«      }t        |d«      sŒÁt        d|z  «      5  ||   }d d d «       t        d|z  «      5  j                  || j                  «      }d d d «       st        j                  d|«       ||= �Œ-t        j                  d|«       �ŒE y # 1 sw Y   ŒsxY w# 1 sw Y   ŒLxY w)	Nrv  r3  z
%s droppedrU  z	load '%s'ú
prune '%s'ú%s pruned to empty; droppedú	%s pruned)Ú_sort_tablesÚstripr­   r'  r,  r©   r-  Úlogr    r   r7  r}  ÚtimerrU  ©r#   r%   rK  Úclazzr—  Úretains         r   Ú_prune_pre_subsetzSubsetter._prune_pre_subsetï  s7  € Ø×$Ñ$ TÓ*ó 	/ˆCà—	‘	“˜tŸ|™|×7Ñ7Ñ7à—I‘I“K 4§<¡<×#>Ñ#>Ñ>Ø ŸL™L×0Ò0à˜6’M¨4¯<©<×+CÒ+CÈÐRVÉä—‘˜ sÔ+Ø˜�IØä×'Ñ'¨Ó,ˆEä�uÐ0Õ1Ü˜;¨Ñ,Ó-ñ &Ø  ™I�E÷&ä˜<¨#Ñ-Ó.ñ HØ"×3Ñ3°D¸$¿,¹,ÓG�F÷HáÜ—H‘HÐ:¸CÔ@Ø˜S˜	Ùä—H‘H˜[¨#Ö.ñ3	/÷ &ð &ú÷Hð Hús   Ã!EÃ=E%ÅE"	Å%E.	c           	      ót  ‡
— t        |j                  «       «      }|j                  «       x| _        Š
t        «       | _        | j                  j	                  | j
                  «       | j                  j	                  ˆ
fd„| j                  D «       «       t        «       | _        | j                  j	                  | j                  j                  |«      «       | j                  j	                  ˆ
fd„| j                  D «       «       | j                  rQt        j                  d| j                  «       | j                  j                  s| j                  | j                  «      ‚| j                  j                  «       | _        t        «       | _        d|v rCt#        d«      5  |d   j%                  | «       | j                  j'                  |«       d d d «       t)        | j                  «      | _        | j                   rZ| j                   D �cg c]  }d|z  ‘Œ	 }}t        j                  d|«       | j                  j,                  s| j/                  |«      ‚~| j                  j0                  rtd|v r@| j                  j3                  |j5                  d	«      «       t        j                  d
«       n0| j                  j3                  d«       t        j                  d«       | j                  j6                  rtd|v rpt9        t;        dt=        |j                  «       «      «      «      D ],  }| j                  j3                  |j5                  |«      «       Œ. t        j                  d«       d|v r×t#        d«      5  t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       |d   j%                  | «       | j                  j'                  |«       t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _        | j                  j@                  rÛd|v r×t#        d«      5  t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       |d   j%                  | «       | j                  j'                  |«       t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _!        dD �]  }||v rÜt#        d|z  «      5  t        j                  d|t=        | j                  «      «       t        j                  | j                  |¬«       ||   j%                  | «       | j                  j'                  |«       t        j                  d|t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       tE        | d|jG                  «       › d�t)        | j                  «      «       �Œ d|v r×t#        d«      5  t        j                  d t=        | j                  «      «       t        j                  | j                  |¬«       |d   j%                  | «       | j                  j'                  |«       t        j                  d!t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _$        d|v r×t#        d"«      5  t        j                  d#t=        | j                  «      «       t        j                  | j                  |¬«       |d   j%                  | «       | j                  j'                  |«       t        j                  d$t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _$        d%|v r×t#        d&«      5  t        j                  d't=        | j                  «      «       t        j                  | j                  |¬«       |d%   j%                  | «       | j                  j'                  |«       t        j                  d(t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _%        t)        | j                  «      | _&        |jO                  «       }| jL                  D �ci c]  }|||   “Œ
 c}| _(        tS        | jP                  jU                  «       «      | _+        |j                  «       | jV                     | _,        t)        «       | _-        | j                  j\                  r4|| jL                  z
  D �ch c]  }||   | jV                  k  r|’Œ c}| _-        | jZ                  D �ci c]  }|||   “Œ
 c}| _/        | j                  j\                  s‰
D �cg c]  }|| jL                  v sŒ|‘Œ }	}n.‰
D �cg c]#  }|ja                  |«      | jV                  k  sŒ"|‘Œ% }	}|	| _1        t9        t=        |	«      «      D �ci c]  }||	|      |“Œ c}| _2        t        j                  d)t=        | jL                  «      «       | `y # 1 sw Y   �	ŒoxY wc c}w # 1 sw Y   �ŒxY w# 1 sw Y   �ŒxY w# 1 sw Y   �Œ!xY w# 1 sw Y   �ŒxY w# 1 sw Y   �Œ6xY w# 1 sw Y   �ŒNxY wc c}w c c}w c c}w c c}w c c}w c c}w )*Nc              3   óF   •K  — | ]  }|t        ‰«      k  sŒ‰|   –— Œ y ­wr   r-   ©r   r2   Úglyph_orders     €r   r   z,Subsetter._closure_glyphs.<locals>.<genexpr>  s&   øè ø€ ò %
Ø ÀÄCÈÓDTÓ@TˆK˜�Nñ%
ùs   ƒ!—
!c              3   ó@   •K  — | ]  }|t        ‰«      k\  sŒ|–— Œ y ­wr   r-   r‡  s     €r   r   z,Subsetter._closure_glyphs.<locals>.<genexpr>  s"   øè ø€ ò #
Ø°1¼¸KÓ8HÓ3HŒAñ#
ùrM   zMissing requested glyphs: %srs  zclose glyph list over 'cmap'zU+%04Xz)Missing glyphs for requested Unicodes: %srT  r   zAdded gid0 to subsetz.notdefzAdded .notdef to subsetrB  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)rã  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 afterzRetaining %d glyphs)3r9   ÚgetGlyphOrderÚorig_glyph_orderrŠ  r]   rm  rn  Úglyphs_missingÚ
differencer  r    r­   r0  rh  r´  r$   r}  r€  ra   Úintersection_updater–  Úglyphs_cmapedr1  rk  rŸ  r›  ÚgetGlyphNamer2  rœ  Úminr.   rR  r.  r5  rÓ   ÚlowerÚglyphs_glyfedÚglyphs_cffedÚglyphs_retainedr"   r³  r‹  rT   r¨  r¦  r�  rµ  r§  Ú
getGlyphIDÚnew_glyph_orderÚglyph_index_map)r#   r%   Ú
realGlyphsrw  Úmissingr2   r—  Úorderr   r™  rˆ  s             @r   Ú_closure_glyphszSubsetter._closure_glyphs  s	  ø€ Ü˜×+Ñ+Ó-Ó.ˆ
Ø.2×.@Ñ.@Ó.BÐBˆÔ ä #£ˆÔØ×Ñ×$Ñ$ T×%?Ñ%?Ô@Ø×Ñ×$Ñ$ó %
Ø$(×$<Ñ$<ô%
ô 	
ô "›eˆÔØ×Ñ×"Ñ" 4×#8Ñ#8×#CÑ#CÀJÓ#OÔPØ×Ñ×"Ñ"ó #
Ø×/Ñ/ô#
ô 	
ð ×ÒÜ�H‰HÐ3°T×5HÑ5HÔIØ—<‘<×5Ò5Ø×7Ñ7¸×8KÑ8KÓLÐLà×+Ñ+×0Ñ0Ó2ˆŒä #£ˆÔØ�T‰>ÜÐ5Ó6ñ <Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;÷<ô ' t§{¡{Ó3ˆÔØ× Ò Ø-1×-BÑ-BÖC¨�x !“|ÐCˆGÐCÜ�H‰HÐ@À'ÔJØ—<‘<×7Ò7Ø×9Ñ9¸'ÓBÐBØà�<‰<×$Ò$Ø˜‰~Ø—‘—‘ × 1Ñ 1°!Ó 4Ô5Ü—‘Ð/Õ0à—‘—‘ 	Ô*Ü—‘Ð2Ô3Ø�<‰<×*Ò*Ø˜‰~Üœs 1¤c¨$×*<Ñ*<Ó*>Ó&?Ó@ÓAò :�AØ—K‘K—O‘O D×$5Ñ$5°aÓ$8Õ9ð:ä—‘Ð<Ô=à�T‰>ÜÐ5Ó6ñ 
3Ü—‘ØFÌÈDÏKÉKÓHXôô —
‘
˜4Ÿ;™;¨T�
Ô2Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;Ü—‘ØDÄcÈ$Ï+É+ÓFVôô —
‘
˜4Ÿ;™;¨T�
Ô2÷
3ô ' t§{¡{Ó3ˆÔà�<‰<×&Ò&¨6°T©>ÜÐ5Ó6ñ 
3Ü—‘ØFÌÈDÏKÉKÓHXôô —
‘
˜4Ÿ;™;¨T�
Ô2Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;Ü—‘ØDÄcÈ$Ï+É+ÓFVôô —
‘
˜4Ÿ;™;¨T�
Ô2÷
3ô ' t§{¡{Ó3ˆÔà%ó 	OˆEØ˜‰}ÜÐ7¸%Ñ?Ó@ñ 7Ü—H‘HØHØÜ˜DŸK™KÓ(ôô
 —J‘J˜tŸ{™{°�JÔ6Ø˜‘K×.Ñ.¨tÔ4Ø—K‘K×3Ñ3°JÔ?Ü—H‘HØFØÜ˜DŸK™KÓ(ôô
 —J‘J˜tŸ{™{°�JÔ6÷7ô �D˜G E§K¡K£M ?°"Ð5´yÀÇÁÓ7MÖNð#	Oð& �T‰>ÜÐ5Ó6ñ 
3Ü—‘ØFÌÈDÏKÉKÓHXôô —
‘
˜4Ÿ;™;¨T�
Ô2Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;Ü—‘ØDÄcÈ$Ï+É+ÓFVôô —
‘
˜4Ÿ;™;¨T�
Ô2÷
3ô ' t§{¡{Ó3ˆÔà�T‰>ÜÐ5Ó6ñ 
3Ü—‘ØFÌÈDÏKÉKÓHXôô —
‘
˜4Ÿ;™;¨T�
Ô2Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;Ü—‘ØDÄcÈ$Ï+É+ÓFVôô —
‘
˜4Ÿ;™;¨T�
Ô2÷
3ô ' t§{¡{Ó3ˆÔà�T‰>ÜÐ5Ó6ñ 
3Ü—‘ØFÌÈDÏKÉKÓHXôô —
‘
˜4Ÿ;™;¨T�
Ô2Ø�V‘×+Ñ+¨DÔ1Ø—‘×/Ñ/°
Ô;Ü—‘ØDÄcÈ$Ï+É+ÓFVôô —
‘
˜4Ÿ;™;¨T�
Ô2÷
3ô & d§k¡kÓ2ˆÔä(¨¯©Ó5ˆÔà×'Ñ'Ó)ˆØ9=×9MÑ9MÖ#N°A A u¨Q¡x¡KÒ#NˆÔ ä#& t×'?Ñ'?×'FÑ'FÓ'HÓ#IˆÔ Ø#'×#5Ñ#5Ó#7¸×8PÑ8PÑ#QˆÔ ä'›kˆÔØ�<‰<×#Ò#ð $ d×&:Ñ&:Ñ:ö#àØ˜‘8˜t×7Ñ7Ò7ò ò#ˆDÔð =A×<OÑ<OÖ&P°q q¨%°©(¡{Ò&PˆÔ#à�|‰|×'Ò'Ø*5ÖS Q¸¸d×>RÑ>RÒ9RšqÐSˆOÑSð 'öØ¨$¯/©/¸!Ó*<À×@XÑ@XÓ*X’ðˆOð ð  /ˆÔä27¼¸OÓ8LÓ2Mö 
Ø-.ˆE�/ !Ñ$Ñ% qÑ(ò 
ˆÔô 	�‰Ð&¬¨D×,@Ñ,@Ó(AÔBà‰K÷i<ñ <üò
 D÷(
3ñ 
3ú÷
3ñ 
3ú÷7ñ 7ú÷$
3ñ 
3ú÷
3ñ 
3ú÷
3ñ 
3üò  $Oùò#ùò 'Qùò Tùòùò 
s�   Æ0l<Èm	Í:CmÒCmÖCm(ÚCm5Þ
Cná?Cnænè2n!é#n&ên+ê&n+ê1#n0ën0ë8n5ì<mímím%í(m2	í5m?înînc                 ó   — g | _         | j                  |«      D �]  }t        j                  |«      }|j	                  «       | j
                  j                  v rt        j                  d|«       ŒVt        |d«      rst        d|z  «      5  ||   }| j                  | _        |j                  | «      }| `d d d «       st        j                  d|«       ||= Œ¾t        j                  d|«       ŒÕ| j
                  j                  rt        j                  d|«       �Œt        j                  d|«       ||= �Œ t        d«      5  |j!                  | j"                  «       d d d «       y # 1 sw Y   Œ¶xY w# 1 sw Y   y xY w)	Nz%s subsetting not neededre   zsubset '%s'z%s subsetted to empty; droppedz%s subsettedz'%s NOT subset; don't know how to subsetz0%s NOT subset; don't know how to subset; droppedzsubset GlyphOrder)rÉ  r}  r   r7  r~  r­   r)  r  r    r}  r€  r—  r$   re   r*  ÚwarningÚsetGlyphOrderr™  r�  s         r   Ú_subset_glyphszSubsetter._subset_glyphs¹  sG  € Ø ˆÔØ×$Ñ$ TÓ*ó 	ˆCÜ×'Ñ'¨Ó,ˆEà�y‰y‹{˜dŸl™l×;Ñ;Ñ;Ü—‘Ð3°SÕ9Ü˜ Ô0Ü˜=¨3Ñ.Ó/ñ $Ø  ™I�EØ"&×"6Ñ"6�D”KØ"×0Ñ0°Ó6�FØ˜÷	$ñ
 Ü—H‘HÐ=¸sÔCØ˜S™	ä—H‘H˜^¨SÕ1Ø—‘×0Ò0Ü—‘ÐBÀCÖHä—‘ÐNÐPSÔTØ˜’Ið)	ô, Ð&Ó'ñ 	5Ø×Ñ˜t×3Ñ3Ô4÷	5ð 	5÷!$ð $ú÷ 	5ð 	5ús   Â	*E(ÅE4Å(E1	Å4E=c                 óÔ  — |j                  «       }d|v r"|j                  d«       |j                  d«       |D �]   }|dk(  rŒ
|dk(  �rƒ| j                  j                  rN||   j                  «       }||   j                  |d¬«      }||k7  r t        j                  d|t        |«      «       | j                  j                  r`||   j                  dk\  rN||   j                  «       }||   j                  |d¬«      }||k7  r t        j                  d|t        |«      «       | j                  j                  r?||   j                  }||   j!                  |«      }	||	k7  rt        j                  d	||	«       | j                  j"                  r>t%        |«      }
|
||   j&                  k7  r!|
||   _        t        j                  d
||
«       t)        j*                  |«      }t-        |d«      s�Œ¶t/        d|z  «      5  ||   }|j1                  || j                  «      }d d d «       st        j                  d|«       ||= �Œt        j                  d|«       �Œ# y # 1 sw Y   Œ@xY w)Nrž   Ú
GlyphOrderrÍ  T)Ú	pruneOnlyz%s Unicode ranges pruned: %sr€   z%s CodePage ranges pruned: %sz%s xAvgCharWidth updated: %dz%s usMaxContext updated: %dr®   rz  r{  r|  )r  rW  r  r­   r5  ÚgetUnicodeRangesÚrecalcUnicodeRangesr  r    r!   r6  rå  ÚgetCodePageRangesÚrecalcCodePageRangesr7  ÚxAvgCharWidthÚrecalcAvgCharWidthr8  r   ÚusMaxContextr   r7  r}  r€  r®   )r#   r%   Ú	tableTagsrK  Ú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Ô  s9  € Ø—I‘I“Kˆ	ð �YÑØ×Ñ˜VÔ$Ø×Ñ˜VÔ$Øó )	/ˆCØ�lÒ"ØØ�f‹}Ø—<‘<×4Ò4Ø$(¨¡I×$>Ñ$>Ó$@�MØ$(¨¡I×$AÑ$AÀ$ÐRVÐ$AÓ$W�MØ$¨Ò5ÜŸ™Ø:¸CÄÈÓAVôð —<‘<×5Ò5¸$¸s¹)×:KÑ:KÈqÒ:Pð %)¨¡I×$?Ñ$?Ó$A�MØ$(¨¡I×$BÑ$BÀ4ÐSWÐ$BÓ$X�MØ$¨Ò5ÜŸ™Ø;ØÜ" =Ó1ôð
 —<‘<×4Ò4Ø$(¨¡I×$;Ñ$;�MØ$(¨¡I×$@Ñ$@ÀÓ$F�MØ$¨Ò5ÜŸ™Ð!?ÀÀmÔTØ—<‘<×2Ò2Ü",¨TÓ"2�KØ" d¨3¡i×&<Ñ&<Ò<Ø1<˜˜S™	Ô.ÜŸ™Ð!>ÀÀ[ÔQÜ×'Ñ'¨Ó,ˆEÜ�uÐ1Ö2Ü˜<¨#Ñ-Ó.ñ IØ  ™I�EØ"×4Ñ4°T¸4¿<¹<ÓH�F÷Iñ Ü—H‘HÐ:¸CÔ@Ø˜Sš	ä—H‘H˜[¨#Ö.ñS)	/÷DIð Iús   Ç="IÉI'	c                 óÎ   ‡— g d¢Št        ‰«      D ��ci c]  \  }}||dz   “Œ c}}Št        |j                  «       ˆfd„¬«      }|D �cg c]
  }|dk7  sŒ	|‘Œ c}S c c}}w c c}w )N)r_  r3  r,  rÉ  rÈ  rœ  rž   rT  r€   c                 ó(   •— ‰j                  | d«      S rS  )r¿  )rK  ÚtagOrders    €r   r  z(Subsetter._sort_tables.<locals>.<lambda>
  s   ø€ °8·<±<ÀÀQÓ3G€ r'   )rÂ  r¤  )r5   r!   r  )r#   r%   r2   r{  rH  r¸  s        @r   r}  zSubsetter._sort_tables  s\   ø€ ÚSˆÜ)2°8Ó)<×=¡  A�A�q˜1‘u‘HÓ=ˆÜ�d—i‘i“kÓ'GÔHˆØÖ5�a 1¨Ó#4’Ò5Ð5ùó >ùâ5s   ”AÁ

A"ÁA"c                 óŒ   — | j                  |«       | j                  |«       | j                  |«       | j                  |«       y r   )r„  rž  r¢  rµ  )r#   r%   s     r   r=   zSubsetter.subset  s:   € Ø×Ñ˜tÔ$Ø×Ñ˜TÔ"Ø×Ñ˜DÔ!Ø×Ñ Õ%r'   r   )rh  rx  ry  r^  re  rh  rk  rw  rx  r„  rž  r¢  rµ  r}  r=   r   r'   r   rb  rb  Ñ  s\   „ ô˜)ô ô ô ô¨ô ó)ð ! r°B¸Ró 	.ò/ò8lò\5ò61/òf6ó&r'   rb  z	load fontc                 ó$  — t        j                  | ||j                  |j                  ||j                  ¬«      }|rTt        j
                  d«      }|j                  }|j                  |_        |d   }|j                  dk(  rd|_        ||_        |S )N)ÚcheckChecksumsÚrecalcBBoxesÚrecalcTimestamprD  Ú
fontNumberrË  g       @rÍ  )	r   ÚTTFontr3  r4  rB  r7  Údecode_format_2_0Údecode_format_3_0rÏ  )	ÚfontFiler­   r»  ÚdontLoadGlyphNamesrD  r%   rË  Úsavedrï  s	            r   Ú	load_fontrÅ    s‹   € ä�<‰<ØØ%Ø×*Ñ*Ø×0Ñ0ØØ×&Ñ&ô€Dñ$ Ü×"Ñ" 6Ó*ˆØ×&Ñ&ˆØ!%×!7Ñ!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                  ||j                  ¬«       y )NÚwoffr   )ÚsfntT)ÚreorderTables)
r;  r:  ÚfontTools.ttLibrÈ  Ú
USE_ZOPFLIr>  Úcfgr   Úsaver9  )r%   Úoutfiler­   rÈ  s       r   Ú	save_fontrÏ  4  sV   € à×Ò˜wŸ~™~°Ò7Ý(àˆŒØ—.‘.€D„KØ&-×&?Ñ&?€D‡H�HÔ"Ñ#Ø‡I�Iˆg W×%<Ñ%<€IÕ=r'   c           
      ól  — dd l }|j                  dd| «      } |j                  dd| «      } g }| j                  «       D ]t  }|j                  d«      }t        |«      dk(  r|j	                  t        |d«      «       Œ>|\  }}|j                  t        t        |d«      t        |d«      dz   «      «       Œv |S )Nr   z0[xX]rN  z[<+>,;&#\\xXuU\n	]rK  r€   r¢  )Úrerk   rD  r.   r  r«   rá  rœ  )r`   rÑ  r/   ÚitemÚfieldsÚstartÚends          r   Úparse_unicodesrÖ  ?  s£   € Ûà
�‰ˆ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 }| j                  dd«      j                  «       D ]u  }|j                  d«      }t        |«      dk(  r|j                  t	        |d   «      «       Œ@|j                  t        t	        |d   «      t	        |d   «      dz   «      «       Œw |S )NrM  rN  rK  r€   r   )rQ  rD  r.   r  r«   rá  rœ  )r`   r/   rÒ  rÓ  s       r   Ú
parse_gidsrØ  O  sˆ   € Ø
€AØ—	‘	˜#˜sÓ#×)Ñ)Ó+ò @ˆØ—‘˜C“ˆÜˆv‹;˜!ÒØ�H‰H”S˜ ™“^Õ$à�H‰H”Uœ3˜v a™y›>¬3¨v°a©y«>¸AÑ+=Ó>Õ?ð@ð €Hr'   c                 óB   — | j                  dd«      j                  «       S )NrM  rN  )rQ  rD  )r`   s    r   Úparse_glyphsrÚ  Z  s   € Ø�9‰9�S˜#Ó×$Ñ$Ó&Ð&r'   c                  óz   — t        dt        t        j                  ¬«       t        dt        j                  ¬«       y )Nzusage:©Úfilez,Try pyftsubset --help for more information.
)rR  Ú	__usage__ÚsysÚstderrr   r'   r   Úusagerá  ^  s!   € Ü	ˆ(”I¤C§J¡JÕ/Ü	Ð
9ÄÇ
Á
ÖKr'   z%make one with everything (TOTAL TIME)c           
      ó  — ddl m} ddlm} | €t        j
                  dd } d| v rt        t        «       yt        «       }	 |j                  | g d¢¬«      } t        | «      dk  rt        «        y ||j                  rt        j                   nt        j"                  ¬«       |j$                  r.t&        j(                  j+                  t        j,                  «       ndt&        j(                  _        | d   }| dd } t1        |¬«      }d}g }g }	g }
d}d}d}| D �]„  }|dk(  rd}Œ|j3                  d«      r|dd }Œ#|j3                  d«      r	||dd z  }Œ=|j3                  d«      r=t5        |dd d¬«      5 }||j7                  «       j9                  dd«      z  }ddd«       Œ‹|j3                  d«      r)|dd dk(  rd}n|
j;                  t=        |dd «      «       ŒÅ|j3                  d«      r[t5        |dd «      5 }|j?                  «       D ].  }|
j;                  t=        |jA                  d«      d   «      «       Œ0 	 ddd«       �Œ1|j3                  d «      r|	j;                  tC        |dd «      «       �Œa|j3                  d!«      r[t5        |dd «      5 }|j?                  «       D ].  }|	j;                  tC        |jA                  d«      d   «      «       Œ0 	 ddd«       �ŒÍ|j3                  d"«      r*|d#d dk(  rd}n|j;                  tE        |d#d «      «       �Œ|j3                  d$«      r[t5        |dd «      5 }|j?                  «       D ].  }|j;                  tE        |jA                  d«      d   «      «       Œ0 	 ddd«       �Œt|jG                  |«       �Œ‡ |jH                   xr | }|jJ                  }tM        ||||¬%«      }|€:|jN                  �d&|jN                  jQ                  «       z   nd}tS        ||dd'¬(«      }t'        d)«      5  |r|j;                  |jU                  «       «       |r‡|d*   jV                  D ]u  }|jY                  «       sŒ|
j;                  |jZ                  j]                  «       «       |j^                  dk(  sŒM|
j;                  |j`                  j]                  «       «       Œw d|vsJ ‚	 ddd«       tb        je                  d+|z  «       tb        je                  d,|
«       tb        je                  d-|«       tb        je                  d.|	«       |jg                  ||	|
|¬/«       |ji                  |«       tk        |||«       |j                  rjddl6}tb        je                  d0|jn                  jq                  |«      |fz  «       tb        je                  d1|jn                  jq                  |«      |fz  «       |jr                  r|ju                  t        jv                  «       |jy                  «        y# |j                  $ r0}t        «        t        d	|t        j                  ¬
«       Y d}~yd}~ww xY w# 1 sw Y   �Œ·xY w# 1 sw Y   �ŒxY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒöxY w# 1 sw Y   �Œ¿xY w)2z%OpenType font subsetter and optimizerr   )Úsplitext)ÚconfigLoggerNr€   z--help)	rs  z	gids-filer$   zglyphs-fileru  z	text-filert  zunicodes-filezoutput-file)rU  zERROR:rÜ  r‘   )ÚlevelT)r­   Fr  r   z--output-file=ru  z--text=é   z--text-file=r†  zutf-8)Úencodingú
z--unicodes=é   z--unicodes-file=r¢  ú#z--gids=z--gids-file=z	--glyphs=é	   z--glyphs-file=)rÃ  rD  rA  z.subset)Ú	extensionÚ	overWriteÚsuffixzcompile glyph listrs  z
Text: '%s'zUnicodes: %sz
Glyphs: %szGids: %s)r$   rs  rt  ru  zInput font:% 7d bytes: %szSubset font:% 7d bytes: %s)=Úos.pathrã  Ú	fontToolsrä  rß  rT  rR  Ú__doc__rµ  r]  r¹  rá  rà  r.   r?  ÚloggingÚINFOÚWARNINGr@  r€  r(   ÚsetLevelÚDEBUGÚdisabledrb  rj  ÚopenÚreadrQ  rá  rÖ  Ú	readlinesrD  rØ  rÚ  r  rÎ  rD  rÅ  r:  r”  r   rŒ  rx  ry  rs  r  rz  r{  r  r    rx  r=   rÏ  ÚosÚpathÚgetsizerA  ÚsaveXMLÚstdoutÚclose)Úargsrã  rä  r­   ÚeÚfontfileÚ	subsetterrÎ  r$   rs  rt  Úwildcard_glyphsÚwildcard_unicodesru  r   rï  ÚlinerÃ  rD  r%   Úextr{  rû  s                          r   Úmainr	  c  s´  € õ !Ý&à€|Ü�x‰x˜˜ˆ|ˆà�4ÑÜŒgŒØä‹i€GðØ×!Ñ!Øò
ð "ó 
ˆô& ˆ4ƒy�1‚}ÜŒØá w§¢”w—|’|¼G¿O¹OÕLØ‡~‚~Ü�‰×ÑœgŸm™mÕ,à $Œ�‰Ôà�A‰w€HØ��ˆ8€Dä 'Ô*€IØ€GØ€FØ€DØ€HØ€OØÐØ€DØó ,ˆØ�Š8Ø"ˆOØØ�<‰<Ð(Ô)Ø˜˜�fˆGØØ�<‰<˜	Ô"Ø�A�a�b�E‰MˆDØØ�<‰<˜Ô'Ü�a˜˜�f wÔ/ð 3°1Ø˜Ÿ™›×(Ñ(¨¨rÓ2Ñ2�÷3àØ�<‰<˜Ô&Ø��ˆv˜Š}Ø$(Ñ!à—‘¤¨q°°¨vÓ 6Ô7ØØ�<‰<Ð*Ô+Ü�a˜˜�f“ð H ØŸK™K›Mò H�DØ—O‘O¤N°4·:±:¸c³?À1Ñ3EÓ$FÕGñH÷Hñ Ø�<‰<˜	Ô"Ø�K‰Kœ
 1 Q R 5Ó)Ô*ÙØ�<‰<˜Ô'Ü�a˜˜�f“ð @ ØŸK™K›Mò @�DØ—K‘K¤
¨4¯:©:°c«?¸1Ñ+=Ó >Õ?ñ@÷@ñ Ø�<‰<˜Ô$Ø��ˆu˜Š|Ø"&‘à—‘œl¨1¨Q¨R¨5Ó1Ô2ÙØ�<‰<Ð(Ô)Ü�a˜˜�f“ð D ØŸK™K›Mò D�DØ—M‘M¤,¨t¯z©z¸#«¸qÑ/AÓ"BÕCñD÷Dñ Ø�‰�aÖðY,ð\ %×0Ñ0Ð0Ò?¸°ZÐØ�<‰<€DÜØ�'Ð.@Àtô€Dð €Ø.5¯n©nÐ.Hˆc�G—N‘N×(Ñ(Ó*Ò*ÈdˆÜ$Ø ¨t¸Iô
ˆô 
Ð#Ó	$ñ 	 ÙØ�M‰M˜$×,Ñ,Ó.Ô/ÙØ˜&‘\×(Ñ(ò :�Ø—;‘;•=Ø—O‘O A§F¡F§K¡K£MÔ2Ø—x‘x 2“~Ø Ÿ™¨¯	©	¯©Ó(8Õ9ð	:ð
 ˜ÑÐÑ÷	 ô ‡H�Hˆ\˜DÑ Ô!Ü‡H�Hˆ^˜XÔ&Ü‡H�Hˆ\˜6Ô"Ü‡H�HˆZ˜Ôà×Ñ˜f¨4¸(ÈÐÔNØ×Ñ�TÔäˆd�G˜WÔ%à‡‚Ûä�‰Ð,°·±·±ÀÓ0IÈ8Ð/TÑTÔUÜ�‰Ð-°·±·±ÀÓ1IÈ7Ð0SÑSÔTà‡{‚{Ø�‰”S—Z‘ZÔ à‡J�J…Løðe ×Ñò ÜŒÜˆh˜¤§
¡
Õ+Üûðú÷J3ñ 3ú÷Hñ Hú÷@ñ @ú÷Dñ Dú÷$	 ñ 	 úsd   ÁX Å5$YÇ;AYÊAY(Ì>AY5ÐAZÑ8ZÒ1ZØYØ&YÙYÙY	ÙY%	Ù(Y2	Ù5Y?	ÚZ)rµ  rb  rÅ  rÏ  rØ  rÚ  rÖ  r	  r   )FT)F)T)r   FT)€rð  r   ÚfontTools.misc.roundToolsr   r   ÚfontTools.ttLib.tablesr   ÚfontTools.ttLib.tables.otBaser   ÚfontTools.otlLib.maxContextCalcr   ÚfontTools.pens.basePenr	   ÚfontTools.misc.loggingToolsr
   ÚfontTools.misc.cliToolsr   ÚfontTools.subset.utilr   r   ÚfontTools.subset.cffÚfontTools.subset.svgÚfontTools.varLibr   r   ÚfontTools.ttLib.tables._n_a_m_er   rß  r]  Úarrayrò  Úcollectionsr   r   Ú	functoolsr   Útypesr   rÞ  rñ  Ú	getLoggerr  r&   r$   r€  r+   r3   rˆ   r6   r:   r=   rA   rC  rP   ÚSingleSubstra   re   ÚMultipleSubstÚAlternateSubstÚLigatureSubstÚReverseChainSingleSubstÚDevicer•   ÚValueRecordrŸ   Ú	SinglePosr®   ÚPairPosÚ
CursivePosÚAnchorÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosr	  r  ÚContextSubstÚChainContextSubstÚ
ContextPosÚChainContextPosr  r€  ÚExtensionSubstÚExtensionPosr™  r˜  rÞ  rä  rí  r1  rö  rü  r/  r  r  r  r  r0  r7  r8  r<  r?  rO  rQ  rU  rZ  rs  r¬  râ  ÚMathGlyphConstructionr=  rJ  rK  rL  rS  rm  rÜ  rd  r|  rµ  rb  rÅ  rÏ  rÖ  rØ  rÚ  rá  r	  Ú__all__r   r'   r   ú<module>r1     sf  ðõ
 Ý -Ý Ý +Ý ?Ý 6Ý *Ý -Ý 6ß 9Ü "Ü "ß 4Ý =Û 
Û Û Û ß ,Ý Ý àA€	ðð ñðUñcð ðP €g×ÑÐ*Ó+€óQñ ˜ SÓ)€„
ñ 	Ð&�W×&Ñ&Ð'?Ó@ÔA€ò%ò0ñ
 ˆX×ÑÓñAó  ðAñ
 ˆX×ÑÓñ6ó  ð6ñ
 ˆX×ÑÓñó  ðñ ˆX×ÑÓñ9ó  ð9ñ
 ˆX×ÑÓñó  ðñ ˆX×ÑÓñSó  ðSñ ˆX×ÑÓòó  ðñ& ˆX×ÑÓñPó  ðPñ
 ˆX×!Ñ!Ó"ñKó #ðKñ ˆX×!Ñ!Ó"ñó #ðñ ˆX×#Ñ#Ó$ñ#ó %ð#ñ ˆX×#Ñ#Ó$ñó %ðñ ˆX×$Ñ$Ó%ñYó &ðYñ ˆX×$Ñ$Ó%ñ!ó &ð!ñ ˆX×#Ñ#Ó$ñó %ðñ ˆX×#Ñ#Ó$ñ ó %ð ñ ˆX×-Ñ-Ó.ñ
5ó /ð
5ñ ˆX×-Ñ-Ó.ñ5ó /ð5ñ( ˆX�_‰_Óñ)ó ð)ñ ˆX×!Ñ!Ó"ñ ó #ð ñ ˆX×ÑÓ ñ5ó !ð5ñ ˆX×ÑÓ ñó !ðñ> ˆX×ÑÓñ*5ó ð*5ñZ ˆX×ÑÓñ7ó ð7ñ( ˆX× Ñ Ó!ñ	5ó "ð	5ñ ˆX�_‰_Óñ	ó ð	ñ ˆX× Ñ Ó!ñó "ðñ ˆX×!Ñ!Ó"ñ5ó #ð5ñ4 ˆX×!Ñ!Ó"ñ	ó #ð	ñ ˆX× Ñ Ó!ñ5ó "ð5ñ> ˆX× Ñ Ó!ñó "ðñ ˆX×!Ñ!Ó"ñ5ó #ð5ñ4 ˆX×!Ñ!Ó"ñ	ó #ð	ñ Ø×ÑØ×ÑØ×ÑØ×ÑØ×$Ñ$Ø×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×Ñóñ	óð	ñ Ø×ÑØ×ÑØ×ÑØ×ÑØ×$Ñ$Ø×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×Ñóñóðñ Ø×ÑØ×ÑØ×ÑØ×ÑØ×$Ñ$Ø×ÑØ×ÑØ×ÑØ×Ñó
ñó
ðñ Ø×Ñ˜(×1Ñ1°8×3SÑ3Sóñóðñ Ø×ÑØ×ÑØ×ÑØ×Ñó	ñóðñ Ø×ÑØ×ÑØ×ÑØ×Ñó	ñW?óðW?ñt ˆX×"Ñ" H×$>Ñ$>Ó?ñl5ó @ðl5ñ^ Ø×ÑØ×ÑØ×ÑØ×Ñó	ñW5óðW5ñt Ø×ÑØ×ÑØ×ÑØ×Ñó	ñ&5óð&5ñR Ø×ÑØ×ÑØ×ÑØ×Ñó	ñ5óð5ñ& ˆX×$Ñ$Ó%ñ5ó &ð5ñ ˆX×$Ñ$Ó%ñ5ó &ð5ñ ˆX×$Ñ$ h×&;Ñ&;Ó<ñ5ó =ð5ñ ˆX×$Ñ$ h×&;Ñ&;Ó<ñ5ó =ð5ñ ˆX×$Ñ$ h×&;Ñ&;Ó<ñ5ó =ð5ñ ˆX×$Ñ$ h×&;Ñ&;Ó<ñ5ó =ð5ñ ˆX�_‰_Óò)ó ð)ñ( ˆX�_‰_Óñ	$ó ð	$ñ ˆX�_‰_Óñó ðñ ˆX�_‰_Óñ)ó ð)ñ
 ˆX�_‰_ÓñIó ðIñ ˆX�_‰_ÓñEó ðEñ ˆX× Ñ Ó!ñNó "ðNñ
 ˆX× Ñ Ó!ñó "ðñ ˆX× Ñ Ó!ñ)ó "ð)ñ ˆX× Ñ Ó!ñó "ðñ ˆX× Ñ Ó!ñ"ó "ð"ñ* ˆX×ÑÓñó ðñ ˆX×!Ñ!Ó"ñ
ó #ð
ñ ˆX×!Ñ!Ó"ñó #ðñ ˆX×!Ñ!Ó"ñ#ó #ð#ñ ˆX×.Ñ.Ó/ñó 0ðñ ˆX×'Ñ'Ó(ñó )ðñ ˆX×'Ñ'Ó(ñ	ó )ð	ñ ˆX×.Ñ.Ó/ñ	(ó 0ð	(ñ ˆX×'Ñ'Ó(ñ,ó )ð,ñ" ˆX×$Ñ$ h×&6Ñ&6Ó7ñDó 8ðDñ ˆX×$Ñ$ h×&6Ñ&6Ó7ñ'ó 8ð'ñ ˆX�_‰_Óò:ó ð:ñ ˆX�_‰_Óñ0ó ð0ñ ˆX× Ñ Ó!ñ	"ó "ð	"ñ ˆX× Ñ Ó!ñYó "ðYñ
 Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ: Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñó Gðñ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ9ó Gð9ñ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ
ó Gð
ñ, Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ=ó Gð=ñ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFò,ó Gð,ñ. Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ
ó Gð
ñ$ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ8ó Gð8ñ4 Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ
ó Gð
ñ  Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñó Gðñ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ2ó Gð2ñ> Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ+ó Gð+ñ\ Ð ˆ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ñf Ð ˆU× Ñ  Ó(Ó)ñ9(ó *ð9(ñx ˆX×+Ñ+Ó,ñó -ðñ ˆX×"Ñ"Ó#ñó $ðñ" Ð ˆU× Ñ  Ó(Ó)ñAó *ðAñ Ð ˆU× Ñ  Ó(Ó)ñ"ó *ð"ñ6 Ð ˆU× Ñ  Ó(Ó)ñ)ó *ð)ñX Ð ˆU× Ñ  Ó(Ó)ñ2ó *ð2ñ
 ˆX×/Ñ/Ó0ñ-ó 1ð-ñ ˆX×-Ñ-Ó.ñ/ó /ð/ñ ˆX×"Ñ"Ó#ñ$ó $ð$ñ ˆX×#Ñ#Ó$ñ	ó %ð	ñ ˆX×"Ñ"Ó#ñó $ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð!ˆU×!Ñ! &Ó)×/Ñ/Ó0ñó 1ðñ: Ð ˆU× Ñ  Ó(Ó)ñó *ðñ  Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ& Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñ9ó *ð9ñ0 Ð ˆU× Ñ  Ó(Ó)ñ
ó *ð
ñ Ð ˆU× Ñ  Ó(Ó)ñ?ó *ð?ñD Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñ
ó *ð
ñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ> Ð ˆU× Ñ  Ó(Ó)ñó *ðô$f*ˆfô f*ôR@&�ô @&ñF
 €{Óòó ðñ> ÐÓñ>ó  ð>òò ò'òLñ
 Ð.Ó/òNó 0ðNòb	�r'   