Ë
    ^ãjjT ã                  óæ&  — d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ 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mZ d dl m!Z! d dl"Z"d dl#Z#d dl$Z$d dl%Z%d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, dZ-de-z   dz   Z. e%j^                  d«      Z0dçd„Z1 e,e1e0«      e0_2         e e%j^                  d«      ¬«      Z3d„ Z4d„ Z5 eejl                  «      d„ «       Z7 eejl                  «      d„ «       Z8 eejl                  «      d „ «       Z9 eejl                  «      d!„ «       Z: eejv                  «      d"„ «       Z7 eejv                  «      d#„ «       Z< eejv                  «      dèd$„«       Z9 eejv                  «      d%„ «       Z: eejz                  «      d&„ «       Z> eejz                  «      d'„ «       Z? eej€                  «      d(„ «       Z> eej€                  «      d)„ «       Z? eej‚                  «      d*„ «       Z> eej‚                  «      d+„ «       Z? eej„                  «      d,„ «       Z> eej„                  «      d-„ «       Z? eej†                  «      d.„ «       Z> eej†                  «      d/„ «       Z? eejˆ                  «      d0„ «       ZE eejŒ                  «      d1„ «       ZG eej�                  «      d2„ «       Z? eej�                  «      d3„ «       ZI eej”                  «      d4„ «       Z? eej”                  «      d5„ «       ZI eej–                  «      d6„ «       Z? eej˜                  «      d7„ «       ZG eej–                  «      d8„ «       ZI eejš                  «      d9„ «       Z? eejš                  «      d:„ «       ZI eejœ                  «      d;„ «       Z? eejœ                  «      d<„ «       ZI eejž                  «      d=„ «       Z? eejž                  «      d>„ «       ZI eejz                  ej€                  ej‚                  ej„                  ej†                  ej�                  ej”                  ej–                  ejš                  ejœ                  ejž                  «      d?„ «       ZP eejz                  ej€                  ej‚                  ej„                  ej†                  ej�                  ej”                  ej–                  ejš                  ejœ                  ejž                  «      d@„ «       ZQ eejz                  ej€                  ej‚                  ej„                  ej†                  ej¤                  ej¦                  ej¨                  ejª                  «	      dA„ «       ZI eejz                  ej‚                  ej†                  «      dB„ «       ZV eej€                  ej„                  ej¤                  ej¦                  «      dC„ «       ZV eej¤                  ej¦                  ej¨                  ejª                  «      dD„ «       ZW eej¤                  ej¦                  «      dE„ «       Z> eej¤                  ej¨                  ej¦                  ejª                  «      dF„ «       Z? eej¤                  ej¦                  ej¨                  ejª                  «      dG„ «       ZP eej¤                  ej¦                  ej¨                  ejª                  «      dH„ «       ZQ eej°                  «      dI„ «       Z> eej°                  «      dJ„ «       ZV eej°                  ej²                  «      dK„ «       Z? eej°                  ej²                  «      dL„ «       ZI eej°                  ej²                  «      dM„ «       ZP eej°                  ej²                  «      dN„ «       ZQ eej´                  «      dçdO„«       Z> eej´                  «      dP„ «       Z? eej´                  «      dQ„ «       ZI eej´                  «      dR„ «       ZP eej´                  «      dS„ «       ZQ eej´                  «      dT„ «       ZV eej¶                  «      dU„ «       Z? eej¶                  «      dV„ «       ZI eej¶                  «      dW„ «       ZP eej¶                  «      dX„ «       Z\ eej¶                  «      dY„ «       Z] eej¼                  «      dZ„ «       ZP eej¾                  «      d[„ «       ZP eej¾                  «      d\„ «       ZQ eej¾                  «      d]„ «       Z` eejÂ                  «      d^„ «       ZP eejÄ                  «      d_„ «       ZP eejÆ                  «      d`„ «       ZP eejÆ                  «      da„ «       ZQ eejÈ                  «      db„ «       ZP eejÈ                  «      dc„ «       ZQ eejÂ                  «      dd„ «       Z` eejÂ                  «      de„ «       Ze eejÈ                  «      df„ «       Z` eejÈ                  «      dg„ «       Ze eejÌ                  ejÎ                  «      dh„ «       Z` eejÌ                  ejÎ                  «      di„ «       Ze eejÌ                  ejÎ                  «      dj„ «       Zh eejÒ                  «      dédk„«       Z` eejÒ                  «      dédl„«       Ze eejÒ                  «      dm„ «       Zh eejÔ                  «      dn„ «       Z` eejÔ                  «      do„ «       Ze eejÔ                  «      dp„ «       Zh e ejÖ                  dq«      «      dr„ «       Z? e ejÖ                  ds«      «      dt„ «       Z? e ejÖ                  du«      «      dv„ «       Z? e ejÖ                  dw«      «      dx„ «       Z> e ejÖ                  dw«       ejÖ                  dy«      «      dz„ «       Z? e ejÖ                  dw«       ejÖ                  dy«      «      d{„ «       Zl e ejÖ                  dw«       ejÖ                  dy«      «      d|„ «       ZP e ejÖ                  dw«       ejÖ                  dy«      «      d}„ «       Z\ e ejÖ                  dw«       ejÖ                  dy«      «      dêd~„«       Zm e ejÖ                  dw«       ejÖ                  dy«      «      d„ «       Zn e ejÖ                  dw«       ejÖ                  dy«      «      d€„ «       Zo e ejÖ                  dw«       ejÖ                  dy«      «      d�„ «       Ze e ejÖ                  dw«       ejÖ                  dy«      «      d‚„ «       Zp e ejÖ                  dw«       ejÖ                  dy«      «      dƒ„ «       Zq e ejÖ                  dw«       ejÖ                  dy«      «      d„„ «       Zr e ejÖ                  dw«       ejÖ                  dy«      «      d…„ «       ZI e ejÖ                  d†«      «      d‡„ «       Z?dˆ„ Zs e ejÖ                  d†«      «      d‰„ «       ZI e ejÖ                  dŠ«      «      d‹„ «       Zq e ejÖ                  dŠ«      «      dŒ„ «       Z? e ejÖ                  d�«      «      dŽ„ «       Z? e ejÖ                  d�«      «      d�„ «       Z? e ejÖ                  d‘«      «      d’„ «       Z? e ejÖ                  d“«      «      d”„ «       Z? e ejÖ                  d•«      «      d–„ «       Z> e ejÖ                  d•«      «      d—„ «       Z? e ejÖ                  d˜«      «      d™„ «       Z? e ejÖ                  dš«      «      d›„ «       Zq e ejÖ                  dš«      «      dœ„ «       Z?d�„ Zt e ejÖ                  dž«      «      dŸ„ «       Z? e ejÖ                  d «      «      d¡„ «       Z? e ejÖ                  d¢«      «      d£„ «       Z? e ejÖ                  d¤«      «      d¥„ «       Z? e ejÖ                  d¦«      «      d§„ «       Zq e ejÖ                  d¦«      «      d¨„ «       Z? e ejÖ                  d©«      «      dª„ «       Z?d«„ Zu e ejÖ                  d¬«      «      d­„ «       Z> e ejÖ                  d¬«      «      d®„ «       Z? e ejÖ                  d¯«      «      d°„ «       ZI eejì                  «      d±„ «       Z> eejî                  «      d²„ «       Z> e ejÖ                  d³«      «      d´„ «       Z? e ejÖ                  d³«      «      dµ„ «       Z> e ejÖ                  d³«      «      d¶„ «       ZI e ejÖ                  d·«      «      d¸„ «       Z> eejð                  «      d¹„ «       Z? eejò                  «      dº„ «       Z? eejô                  «      d»„ «       Z? eejö                  «      d¼„ «       Z? eejî                  «      d½„ «       Z? e ejÖ                  d·«      «      d¾„ «       Z? e ejø                  d¿«      jú                  «      dédÀ„«       Z~ e ejÖ                  d¿«      «      dÁ„ «       Z> e ejÖ                  d¿«      «      dÂ„ «       Zq e ejÖ                  d¿«      «      dÃ„ «       Z? e ejÖ                  d¿«      «      dÄ„ «       ZIdÅ„ ZdëdÆ„Z€ e ejÖ                  dÇ«      «      dÈ„ «       Z>dÉ„ Z� e ejÖ                  dÇ«      «      dÊ„ «       Zq e ejÖ                  dÇ«      «      dË„ «       Z? e ejÖ                  dÌ«      «      dÍ„ «       Zq e ejÖ                  dÎ«      «      dÏ„ «       Zqh dÐ£Z‚ e ejÖ                  dÑ«      «      dÒ„ «       ZIdìdÓ„Zƒ e ejÖ                  dÔ«      «      dÕ„ «       ZI G dÖ„ d×e„«      Z… G dØ„ dÙe„«      Z† e3dÚ«      dídÛ„«       Z‡dÜ„ ZˆdÝ„ Z‰ e3dÞ«      dß„ «       ZŠdà„ Z‹dá„ ZŒdâ„ Z�dã„ ZŽ e3dä«      dçdå„«       Z�g dæ¢Z�y)îé    )Úannotations)Úconfig)ÚotRound)ÚttLib)ÚotTables)ÚUSE_HARFBUZZ_REPACKER)Ú_compact_layout_tables)Ú
maxCtxFont)ÚNullPen)ÚTimer)ÚmakeOutputFileName)Ú_add_methodÚ
_uniq_sort)Ú*)ÚvarStoreÚmultiVarStore)ÚNameRecordVisitorÚmakeName)ÚmirroredN)ÚCounterÚdefaultdict)Úreduce)Ú
MethodTypez9fonttools subset font-file [glyph...] [--option=value]...a$  fonttools subset -- OpenType font subsetter and optimizer

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

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

Usage: a6:  

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

Args:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Examples::

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

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

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

--flavor=<type>
  Specify flavor of output font file. May be 'woff' or 'woff2', or
  'none' (case-insensitive) for uncompressed OpenType. By default,
  the flavor of the input font is preserved.
  Note that WOFF2 requires the Brotli Python extension, available
  at https://github.com/google/brotli

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--hinting
  Keep hinting [default]

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

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

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

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

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

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

  Examples:

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

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

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

  --drop-tables=
      * Keep all tables.

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

  Example:

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

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

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

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

  Examples:

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

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

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

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

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

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

  Examples:

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

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

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

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

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

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

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

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

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

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

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

Example
^^^^^^^

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

  $ fonttools subset font.ttf --unicodes="U+0020-0025" \
    --layout-features=* --glyph-names --symbol-cmap --legacy-cmap \
    --notdef-glyph --notdef-outline --recommended-glyphs \
    --name-IDs=* --name-legacy --name-languages=*
zfontTools.subsetc                óª   ‡— | 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     €ú[/var/www/html/metafoliadorv2/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_subsetr7   á  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(   r6   r   s       r!   Ú	intersectr:   æ  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.©r:   r(   )r'   r(   r4   r   s       r!   ÚsubsetrA   ò  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_mapr6   s      r!   ÚremaprE   ú  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   ÚanyrI   Úitems)r'   r(   r   Úvs   `   r!   r:   r:      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   rH   rJ   s     €r!   r"   z"intersect_class.<locals>.<genexpr>  s   øè ø€ Ò@˜¨°·±Ò(?”1Ñ@ùó   ƒ—c              3  ó>   •K  — | ]  \  }}|‰k(  sŒ|‰v sŒ|–— Œ y ­wr   r   )r   r   rN   r(   Úklasss      €€r!   r"   z"intersect_class.<locals>.<genexpr>  s!   øè ø€ ÒR‘T�Q˜°q¸E³zÀaÈ6ÂkŒqÑRùs   ƒ‘–)r=   rI   rM   )r'   r(   rS   s   ```r!   Úintersect_classrT   	  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   rH   rJ   s     €r!   r"   zsubset.<locals>.<genexpr>  s   øè ø€ Ò&OÀ1 q°·±Ô'>Ñ&OùrK   r   )rI   rM   r   rL   ÚlistÚvaluesrE   )r'   r(   rE   Ú	useClass0r   rN   r4   s   `      r!   rA   rA     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)rI   rM   Úindex)r'   Ú	class_mapr   rN   s       r!   rE   rE   %  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   rN   Ú
cur_glyphss      €r!   r"   z!closure_glyphs.<locals>.<genexpr>-  s   øè ø€ ÒJ™$˜!˜Q¸!¸zº/”AÑJùó   ƒ�)r(   ÚupdateÚmappingrM   ©r'   Úsr_   s     `r!   Úclosure_glyphsre   +  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   )rb   rM   r(   Úbool©r'   rd   r   rN   s       r!   Úsubset_glyphsri   0  sZ   € ð Ÿ™×+Ñ+Ó-÷Ù��A°°a·h±h²À1ÈÏÉÂ=ˆˆ1‰ó€D„Lô �—‘ÓÐùós   žA'µA'ÁA'c                óˆ   — | j                   j                  «       D ]%  \  }}||v sŒ|j                  j                  |«       Œ' y r   )rb   rM   r(   ra   )r'   rd   r_   ÚglyphÚsubsts        r!   re   re   8  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   rC   )r   Úsubrd   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>D  s   øè ø€ Ò >°S ¨¯©¤Ñ >ùrK   )rb   rM   r(   Úallrg   rh   s    `  r!   ri   ri   ?  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>K  s   øè ø€ ÒW¡  5ÀqÈJÂ”eÑWùr`   )r(   ra   Ú
alternatesrM   rc   s     `r!   re   re   I  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   rC   )r   rN   rd   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>S  s   øè ø€ Ò >°1  a§h¡h¤Ñ >ùrK   )rt   rM   r(   rL   rg   )r'   rd   r   rs   rN   s    `   r!   ri   ri   N  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   rC   ©r   Úcrd   s     €r!   r"   z+closure_glyphs.<locals>.<genexpr>.<genexpr>\  s   øè ø€ Ò0VÀ1°°a·h±h´Ñ0VùrK   N)rp   Ú	ComponentÚLigGlyph)r   r   ÚseqsÚseqr_   rd   s       €€r!   r"   z!closure_glyphs.<locals>.<genexpr>[  sG   øè ø€ ò 

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

ùÚWùs   ƒA“#A·AÁA)r(   ra   Ú	ligaturesrM   rc   s    ``r!   re   re   X  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   rC   rz   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>j  s   øè ø€ Ò/UÀ!°°Q·X±X´Ñ/UùrK   )r€   rM   r(   r}   rp   r|   rg   )r'   rd   r   rN   r~   r   s    `    r!   ri   ri   c  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@   rz   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>v  s&   øè ø€ ò "
àð �K‰K˜Ÿ™×!ñ"
ùó   ƒ%(c              3  ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr   )Ú
Substitute©r   r6   r'   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>{  s   øè ø€ Ò<¨q˜Ÿ™¨Õ*Ñ<ùs   ƒúunknown format: %s)ÚFormatÚCoverager:   rp   ÚLookAheadCoverageÚBacktrackCoverager(   ra   )r'   rd   r_   r4   s   ``  r!   re   re   r  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   ©rA   r(   rz   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>Œ  s&   øè ø€ ò àð —‘˜Ÿ™×"ñùr†   rŠ   )r‹   rŒ   rA   r(   r7   rˆ   r9   rE   r2   Ú
GlyphCountrg   rp   r�   rŽ   )r'   rd   r4   r6   ro   s    `   r!   ri   ri   €  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'   ÚnamerN   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‹   r2   rŒ   rA   r(   ÚValueÚ
ValueCountrg   )r'   rd   r4   rX   r5   r6   s         r!   ri   ri   ¢  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   rN   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   rN   r'   s     €r!   r"   z$prune_post_subset.<locals>.<genexpr>É  s   øè ø€ ÒG°q  T§Z¡Z°¡]Õ 2ÑGùs   ƒ)r¥   ÚValueFormatr‹   Úhintingr£   ÚgetEffectiveFormatrp   r   ÚintÚ__or__r¦   )r'   r)   ÚoptionsrN   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©rE   F)rE   rY   rŠ   )r‹   rŒ   rA   r(   ÚPairSetr2   ÚPairValueRecordÚSecondGlyphÚPairValueCountr9   rE   r7   ÚPairSetCountrg   Ú	ClassDef1ÚintersectionÚClass1CountÚ	ClassDef2ÚClass2CountÚClass1RecordÚClass2Record)r'   rd   r4   Úpairsr5   r6   ÚpÚrr{   Ú
class1_mapÚ
class2_maps              r!   ri   ri   Ñ  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®   ÚValue2rg   )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Œ   rA   r(   ÚEntryExitRecordr2   ÚEntryExitCountrg   )r'   rd   r4   Úrecordsr5   r6   s         r!   ri   ri     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(  �rY| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        t        d„ | j
                  j                  D «       «      }| j                  j                  |j                  «      }| j                  j                  Š
t        ‰
«      }|D �‡cg c]  Š‰|k  rt        ˆ
ˆfd„|D «       «      r‰‘Œ  }}|sy| j                  j                  |«       t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        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  «       ‚c c}w )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ùó   ‚c              3  óF   •K  — | ]  }‰‰   j                   |   d u–— Œ y ­wr   )Ú
BaseAnchor)r   ÚjÚbase_recordsr6   s     €€r!   r"   z subset_glyphs.<locals>.<genexpr>J  s%   øè ø€ ÒUÀ!�L ‘O×.Ñ.¨qÑ1¸Ô=ÑUùó   ƒ!FrŠ   )r‹   ÚMarkCoveragerA   r(   r7   Ú	MarkArrayÚ
MarkRecordr2   Ú	MarkCountr   ÚBaseCoverager:   Ú	BaseArrayÚ
BaseRecordrL   rE   Ú	BaseCountÚ
ClassCountr[   rà   rä   rg   )r'   rd   Úmark_indicesÚclass_indicesÚintersect_base_indicesÚnum_base_recordsr6   Úbase_indicesÚmÚbræ   s         `   @r!   ri   ri   9  sù  ù€ à‡{�{�aÓØ×(Ñ(×/Ñ/°·±Ó9ˆÜ$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô Ü"Ñ"N°D·N±N×4MÑ4MÔ"NÓNˆà!%×!2Ñ!2×!<Ñ!<¸Q¿X¹XÓ!FÐØ—~‘~×0Ñ0ˆÜ˜|Ó,Ðð ,÷
àØÐ#Ò#ÜÔUÀ}ÔUÔUò ð
ˆð 
ñ Øà×Ñ×Ñ Ô-Ü$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô ä˜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ˆqùò1
ó   Ä#J 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²   a  sx   € à�?Š?Ø—‘×*Ñ*ò 	+ˆAØ�|‹|Ø—‘×(Ñ(Õ*ð	+ð —‘×*Ñ*ò 	$ˆAØ—\‘\ò $�ÚØ—M‘M•Oñ$ð	$ð r+   c                ó\  ‡— | j                   dk(  �rƒ| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        t        d„ | j
                  j                  D «       «      Š| j                  j                  |j                  «      }| j                  j                  }| j                  j                  }|D �cg c]*  }||k  r#t        ˆfd„||   j                   D «       «      r|‘Œ, }}|sy| j                  j#                  |«       t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        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  «       ‚c c}w )Nr„   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr   rß   r©   s     r!   r"   z subset_glyphs.<locals>.<genexpr>v  rá   râ   c              3  óH   •‡K  — | ]  Št        ˆfd „‰D «       «      –— Œ y­w)c              3  ó@   •K  — | ]  }‰j                   |   d u–— Œ y ­wr   )ÚLigatureAnchor)r   rå   Ú	components     €r!   r"   z*subset_glyphs.<locals>.<genexpr>.<genexpr>�  s!   øè ø€ ÒSÀ�I×,Ñ,¨QÑ/°tÔ;ÑSùs   ƒN)rL   )r   r  rò   s    @€r!   r"   z subset_glyphs.<locals>.<genexpr>€  s$   ùè ø€ ò àô ÓSÀ]ÔS×Sñùs   „"FrŠ   )r‹   rè   rA   r(   r7   ré   rê   r2   rë   r   ÚLigatureCoverager:   ÚLigatureArrayÚLigatureAttachÚLigatureCountrL   ÚComponentRecordrE   rð   r[   rà   r   rg   )r'   rd   rñ   Úintersect_ligature_indicesÚligature_arrayÚnum_ligaturesr6   Úligature_indicesrö   r3   r{   rò   s              @r!   ri   ri   n  sL  ø€ à‡{�{�aÓØ×(Ñ(×/Ñ/°·±Ó9ˆÜ$0Ø�N‰N×%Ñ% |ó%
ˆ�‰Ô!ô $' t§~¡~×'@Ñ'@Ó#Aˆ�‰Ô Ü"Ñ"N°D·N±N×4MÑ4MÔ"NÓNˆà%)×%:Ñ%:×%DÑ%DÀQÇXÁXÓ%NÐ"Ø×+Ñ+×:Ñ:ˆØ×*Ñ*×8Ñ8ˆð 0ö
àØ�=Ò Üó à!/°Ñ!2×!BÑ!Bôô ò ð
Ðð 
ñ  Øà×Ñ×#Ñ#Ð$4Ô5Ü,8Ø×Ñ×-Ñ-Ð/?ó-
ˆ×ÑÔ)ô ,/¨t×/AÑ/A×/PÑ/PÓ+Qˆ×ÑÔ(ä˜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ˆqùòC
s   Ä/J)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ö   r3   r{   rû   s          r!   r²   r²      s™   € à�?Š?Ø—‘×*Ñ*ò 	+ˆAØ�|‹|Ø—‘×(Ñ(Õ*ð	+ð ×#Ñ#×2Ñ2ò 	(ˆAØˆyØØ×&Ñ&ò (�Ø×)Ñ)ò (�AÚØŸ™�ñ(ñ(ð	(ð r+   c                ó
  ‡‡
— | j                   dk(  �rY| j                  j                  |j                  «      }t	        | j
                  j                  |«      | j
                  _        t        | j
                  j                  «      | j
                  _        t        d„ | j
                  j                  D «       «      }| j                  j                  |j                  «      }| j                  j                  Š
t        ‰
«      }|D �‡cg c]  Š‰|k  rt        ˆˆ
fd„|D «       «      r‰‘Œ  }}|sy| j                  j                  |«       t	        | j                  j                  |«      | j                  _        t        | j                  j                  «      | j                  _        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  «       ‚c c}w )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â   c              3  óF   •K  — | ]  }‰‰   j                   |   d u–— Œ y ­wr   )ÚMark2Anchor)r   rå   r6   Úmark2_recordss     €€r!   r"   z subset_glyphs.<locals>.<genexpr>Á  s&   øè ø€ ÒWÀA�M !Ñ$×0Ñ0°Ñ3¸4Ô?ÑWùrç   FrŠ   )r‹   ÚMark1CoveragerA   r(   r7   Ú
Mark1Arrayrê   r2   rë   r   ÚMark2Coverager:   Ú
Mark2ArrayÚMark2RecordrL   rE   rð   r[   rà   r  rg   )r'   rd   Úmark1_indicesrò   Úintersect_mark2_indicesÚnum_mark2_recordsr6   Úmark2_indicesrö   r÷   r  s         `   @r!   ri   ri   °  sù  ù€ à‡{�{�aÓØ×*Ñ*×1Ñ1°!·(±(Ó;ˆÜ%1Ø�O‰O×&Ñ&¨ó&
ˆ�‰Ô"ô %(¨¯©×(BÑ(BÓ$Cˆ�‰Ô!Ü"Ñ"O°D·O±O×4NÑ4NÔ"OÓOˆà"&×"4Ñ"4×">Ñ">¸q¿x¹xÓ"HÐØŸ™×3Ñ3ˆÜ Ó.Ðð -÷
àØÐ$Ò$ÜÔWÈÔWÔWò ð
ˆð 
ñ Øà×Ñ× Ñ  Ô/Ü&2Ø�O‰O×'Ñ'¨ó'
ˆ�‰Ô#ô %(¨¯©×(CÑ(CÓ$Dˆ�‰Ô!ä˜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ˆqùò1
rø   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>J  ó
   €  Q§Z¡Z€ r+   c                ó   — | j                   S r   r1  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>K  ó
   € ¨!¯*©*€ r+   c                 ó   — y)Nr   r   r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>L  ó   � r+   c                 ó   — y)N)NNNr   r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>M  r8  r+   c                ó   — | j                   fS r   )ÚInputr2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>P  ó   €  a§g¡g Z€ r+   c                óH   — | j                   | j                  | j                  fS r   ©Ú	Backtrackr;  Ú	LookAheadr2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>Q  ó   € ¨1¯;©;¸¿¹ÀÇÁÐ*M€ r+   c                ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3  ó8   K  — | ]  }t        |«      d z   –— Œ y­w©r„   Nr1   ©r   Úxs     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>U  ó   è ø€ Ò&=°a¤s¨1£v°¥zÑ&=ùó   ‚)r;  r’   ©rÃ   r.   s     r!   ÚSetRuleDatazN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataS  ó   € Ø!"‘J�Q”WÙ&=¸1Ô&=‘O�Q•\r+   c                ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y ©Nr   r„   r•   ©r?  r;  r@  r2   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountrI  s     r!   ÚChainSetRuleDatazS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataW  óP   € Ø89Ñ5�A”K ¤¨!¬+ô
 ˜Q˜q™T›¤C¨¨!©£I°¡M´3°q¸±t³9ð	ØÔ-ØÔ)ØÕ-r+   r•   c                ó   — | j                   S r   r1  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>`  r4  r+   c                ó   — | j                   S r   r1  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>a  r6  r+   c                ó   — | j                   fS r   ©ÚClassDefr2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>b  s   € ¨¯©¨€ r+   c                óH   — | j                   | j                  | j                  fS r   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefr2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>c  s"   € Ø×'Ñ'Ø—O‘OØ×'Ñ'ð.€ r+   c                ó   — |\  | _         y r   rW  rI  s     r!   ÚSetContextDatazQ__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetContextDatai  s   € Ø$%‘M�Q•Zr+   c                ó.   — |\  | _         | _        | _        y r   rZ  rI  s     r!   ÚSetChainContextDatazV__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetChainContextDatal  s   € ØPQÑM�AÔ'¨¬¸!Õ:Mr+   c                ó   — | j                   fS r   rß   r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>o  r<  r+   c                óH   — | j                   | j                  | j                  fS r   r>  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>p  rA  r+   c                ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3  ó8   K  — | ]  }t        |«      d z   –— Œ y­wrD  r1   rE  s     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>t  rG  rH  )rà   r’   rI  s     r!   rJ  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDatar  rK  r+   c                ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y rM  rN  rI  s     r!   rR  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDatav  rS  r+   c                ó    — | j                   d   S ©Nr   r1  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s   €  Q§Z¡Z°¡]€ r+   c                ó    — | j                   d   S rh  )ÚInputCoverager2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>€  s   € ¨!¯/©/¸!Ñ*<€ r+   c                ó   — | j                   S r   r1  r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>…  r4  r+   c                óN   — | j                   | j                  z   | j                  z   S r   )rŽ   rj  r�   r2  s    r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>†  s$   € Ø×'Ñ'¨!¯/©/Ñ9¸A×<OÑ<OÑOð r+   c                ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   r1   rE  s     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>Œ  s   è ø€ Ò&9°!¤s¨1§vÑ&9ùó   ‚)rŒ   r’   rI  s     r!   rJ  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataŠ  s   € Ø$%‘M�Q”ZÙ&9°qÔ&9‘O�Q•\r+   c                óf   — |\  | _         | _        | _        d„ |D «       \  | _        | _        | _        y )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   r1   rE  s     r!   r"   zf__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>”  s   è ø€ Ò+ Aœ˜QŸÑ+ùro  )rŽ   rj  r�   rO  rP  rQ  rI  s     r!   rR  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataŽ  s7   € ØPQÑM�AÔ'¨¬¸!Ô:Mñ
 ,¨Ô+ñ	ØÔ-ØÔ)ØÕ-r+   rŠ   ÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                ó   — || v r|gS g S r   r   ©r(   r{   rÃ   s      r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>«  s   € ¸QÀ&¹[°q°c€ Èb€ r+   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                ó^   — |r|j                  | |«      S |dk(  rt        | «      S t        «       S rh  )rT   r=   rw  s      r!   r3  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>±  s<   € áð ×%Ñ% f¨aÓ0ð ð *+¨aªœ#˜f›+ð ô 69³Uð r+   r\  rX  r;  rà   rj  rŒ   )Ú__name__ÚendswithÚ
startswithÚTypÚTyper-  ÚChainTypÚInputIdxÚDataLenr/  rŒ   ÚContextDatar_  ÚRuleDatarJ  rr  rs  rt  ru  Ú	IntersectrX  ÚClassDefIndexr;  )r'   rS   r‹   r€  r�  r-  rƒ  r„  r‚  rŒ   ÚChainCoverager…  ÚChainContextDatar_  ra  r†  ÚChainRuleDatarJ  rR  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�ñ$Ð ò&òRñ 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)r}  Ú
__module__Ú__qualname__rŒ  r   r+   r!   ÚContextHelperr(  .  s	   „ óL	Fr+   r�  r”   Ú_subset__ContextHelpers)Úobjectr‹   ÚhasattrÚ	__class__r�  )r'   r�  Ú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   ©r‡  r(   ©r   Úkr{   Úcdrd   s     €€€r!   r"   z+closure_glyphs.<locals>.<genexpr>.<genexpr>Û  ó"   øè ø€ ÒD¸˜Ÿ™ A§H¡H¨b°!×4ÑDùó   ƒ'*N©rp   ©r   Úklistrœ  r{   rd   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   rF  rd   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>  s*   øè ø€ ÒU¸q�1˜D�=Ò: Q§[¡[°·±Ó%:Ó:ÑUùó   ƒ+.rŠ   )r•  rŒ   r:   r>   r‹   r…  rŸ   rt  ru  rr  rp   Úzipr†  r=   r/  ÚSequenceIndexÚ	frozensetr(   r;  ÚtableÚ
LookupListÚLookupÚLookupListIndexÚaddr$  ra   Úranger2   re   rX  rT   )r'   rd   r_   r4   r…  ÚrssÚrssCountr6   rÃ   ÚchaosÚllÚseqiÚ
pos_glyphsÚlookuprX  Úinput_coveragesr{   s    `              @r!   re   re   Ç  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   rC   )r   r   rd   s     €r!   r"   z*subset_glyphs.<locals>.<genexpr>.<genexpr>M  s   øè ø€ Ò9¨a˜A §¡œMÑ9ùrK   NrŸ  )r   Úglistrd   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>M  s   øè ø€ ÒU¸eœÓ9°5Ô9×9ÑUùrç   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>s  s   øè ø€ Ò6¨1˜˜YœÑ6ùs   ƒNrŸ  )r   r¡  rÀ  s     @r!   r"   z subset_glyphs.<locals>.<genexpr>r  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Œ   rA   r(   rŸ   rt  ru  rr  rp   r†  r×   rs  r2   r9   rE   r7   rg   r…  rˆ  rX  r:   r©  rJ  r[   )r'   rd   r{   r4   r²  r³  r6   ÚrsÚssrÃ   r…  rF  Ú
klass_mapsrÀ  r¡  r›  s    `              r!   ri   ri   7  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Ÿ   rt  rr  r×   r/  r¯  r[   )r'   r  r{   rÃ  rÃ   rµ  s         r!   r  r  —  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Ÿ   rt  rr  r/  r¯  )r'   r{   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‹   ÚExtSubTablere   rc   s      r!   re   re   ß  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Ê  ri   ©r'   rd   s     r!   ri   ri   ï  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Úgetr2   r=   Úissubsetra   ÚSubTablere   )r'   rd   r_   ÚkeyÚdoneLookupsr5   ÚcoveredÚsts           r!   re   re     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«      r€| j
                  �t| j
                  |j                  vr2d | _        | xj                  dz  c_        | xj                  dz  c_        n*|j                  j                  | j
                  «      | _        t        | j                  «      S c c}w )NÚMarkFilteringSetiïÿÿÿé   )
rÖ  ri   r2   ÚSubTableCountr’  rÜ  Úused_mark_setsÚ
LookupFlagr[   rg   )r'   rd   rÚ  s      r!   ri   ri   $  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Ø�OŠO˜sÑ"ŽOà$%×$4Ñ$4×$:Ñ$:¸4×;PÑ;PÓ$QˆDÔ!Ü�×"Ñ"Ó#Ð#ùò Os   �C0—C0©C0c                ó\   — d}| j                   D ]  }|sŒ|j                  ||«      sŒd}Œ |S ©NFT)rÖ  r²   )r'   r)   r±   ÚretrÚ  s        r!   r²   r²   2  s<   € à
€CØ�m‰mò ˆÙØØ×Ñ  gÕ.Ø‰Cð	ð
 €Jr+   c                óH   — | j                   D ]  }|j                  |«       Œ y r   )rÖ  r  )r'   r  rd   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>E  s   è ø€ ÒC¨Â�×"Ñ"×$ÑCùó   ‚Š)ÚsumrÖ  r˜   s    r!   r   r   C  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>J  s   è ø€ ÒD¨"Âˆr×#Ñ#×%ÑDùrè  )rL   rÖ  r˜   s    r!   r$  r$  H  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.)r9   r®  ri   )r'   rd   r6   r3   s       r!   ri   ri   M  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ã  r3   s        r!   r²   r²   S  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®  r2   r  ©r'   r  r6   r3   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ï  r9   r®  rñ  s       r!   Úneuter_lookupsrô  g  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>w  s/   øè ø€ ÒW°!À!Àd×FVÑFVÓBVˆT�[‰[˜‰^×+Ñ+×-ÑWùs   ƒ:˜":)r   ré  rð  Úextend)r'   r  ÚrecurseÚrecurse_lookupsr3   s   `    r!   Úclosure_lookupsrú  p  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¯  r[   r2   rð  Ú
isinstanceÚFeatureParamsr   ÚFeatureParamsSize)r'   r  r3   s      r!   r  r  †  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)r9   ÚFeatureRecordÚFeaturer  Ú
FeatureTag)r'   r  r6   Úfs       r!   r  r  •  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>   øè ø€ ò 	
àØ�4×$Ñ$Ò$ð ×Ñ˜qÑ!×)Ñ)×9Õ9ñ	
ùs   ƒ<?)ré  ©r'   Úfeature_indicess   ` r!   r   r   £  s"   ø€ äó	
à$ô	
ð
 	óð r+   c                ó¶   — | j                  «        t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )rï  r7   r  r2   r  rg   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                ó   — t        |«      D ��ci c]  \  }}||“Œ
 }}}| j                  D �cg c]  }||v sŒ||   ‘Œ c}| _        t        | j                  «      | _        t	        | j                  «      S c c}}w c c}w r   )r9   ÚLookupIndexr2   ÚLookupIndexCountrg   )r'   r  ÚnewÚoldÚ
lookup_mapr[   s         r!   r  r  Á  s}   € ä+4°^Ó+D×E™x˜s C�#�s‘(ÐE€JÑEà'+×'7Ñ'7öØ#¸5ÀJÒ;Nˆ
�5Óò€DÔô   × 0Ñ 0Ó1€DÔÜ�× Ñ Ó!Ð!ùó Fùòs   �A5­	A;·A;c                óÞ   — | j                   D �cg c]  }|j                  j                  |«      r|‘Œ! c}| _         t        | j                   «      | _        t        | j                   «      S c c}w r   )ÚLookupConditionRecordÚLookupIndexListr  r2   ÚLookupConditionCountrg   )r'   r  Úrecords      r!   r  r  Ë  sd   € ð ×0Ñ0ö"àØ×!Ñ!×0Ñ0°Ô@ò 	ò"€DÔô
 !$ D×$>Ñ$>Ó ?€DÔÜ�×*Ñ*Ó+Ð+ùò"s   �$A*c                ó<   — t        d„ | j                  D «       g «      S )Nc              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wr   )r  r  )r   r  s     r!   r"   z"collect_lookups.<locals>.<genexpr>Ù  s   è ø€ ÒU°ˆ×	Ñ	×	+Õ	+ÑUùs   ‚ ")ré  r  r˜   s    r!   r   r   Ö  s    € äÙU¸$×:TÑ:TÔUØ
óð r+   c                óØ   ‡— t        ˆfd„| j                  D «       g «      }t        | dg «      D ]9  }|j                  j	                  ‰«      sŒ|j                  |j                  «       Œ; |S )r   c              3  ól   •K  — | ]+  }|j                   �|j                   j                  ‰«      –— Œ- y ­wr   )ÚFeatureTableSubstitutionr  )r   r  r  s     €r!   r"   z!subset_lookups.<locals>.<genexpr>â  s6   øè ø€ ò 	
àØ×)Ñ)Ð5ð ×&Ñ&×5Ñ5°n×Eñ	
ùs   ƒ14ÚLookupVariationRecord)ré  ÚFeatureVariationRecordrŸ   ÚFeatureLookupsTabler  Úappendr  )r'   r  r
  r  s    `  r!   r  r  Þ  sr   ø€ ô ó	
à×0Ñ0ô	
ð
 	ó€Oô ˜$Ð 7¸Ó<ò 8ˆØ×%Ñ%×4Ñ4°^ÕDØ×"Ñ" 6×#6Ñ#6Õ7ð8ð Ðr+   c                ó�   ‡— t        ˆfd„| j                  D «       g «      }|j                  ˆfd„t        | dg «      D «       «       |S )Nc              3  ó´   •K  — | ]O  }|j                   �A|j                   j                  D ](  }|j                  ‰v r|j                  j                  –— Œ* ŒQ y ­wr   )r  r  r  r  r¯  )r   ÚvrrÃ   r
  s      €r!   r"   z"collect_lookups.<locals>.<genexpr>ò  s\   øè ø€ ò 	
àØ×*Ñ*Ð6Ø×0Ñ0×CÑCò		
ð Ø�~‰~ Ñ0ð	 �I‰I×%Õ%ð	
Ø%ñ	
ùs   ƒAAc              3  ó|   •K  — | ]3  }|j                   ‰v r#|j                  j                  «       D ]  }|–— Œ Œ5 y ­wr   )r  r"  r   )r   r  Úlookup_indexr
  s      €r!   r"   z"collect_lookups.<locals>.<genexpr>û  sK   øè ø€ ò àØ×Ñ /Ñ1Ø"×6Ñ6×FÑFÓHò	ð ô 	ðØñùs   ƒ9<r   )ré  r!  r÷  rŸ   )r'   r
  r  s    ` r!   r   r   ï  sT   ø€ äó	
à×1Ñ1ô	
ð 	ó	€Nð ×Ñó ä˜dÐ$;¸RÓ@ôô ð Ð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  r[   r2   ÚSubstitutionCountrg   )r'   r
  rÃ   s      r!   r  r    s�   € à×ÑÔà×*Ñ*öØ¨a¯n©nÀÒ.OŠò€DÔð ×$Ñ$ò ?ˆØ(×.Ñ.¨q¯~©~Ó>ˆ�ð?ä  ×!8Ñ!8Ó9€DÔÜ�×&Ñ&Ó'Ð'ùòs
   ŸB³Bc                óL  — | j                  «        | j                  D �cg c]!  }|j                  |j                  «       v sŒ |‘Œ# c}| _        | j                  D ]  }||j                     |_        Œ t	        | j                  «      | _        t        | j
                  «      S c c}w r   )rï  r  r  Úkeysr2   r*  rg   )r'   Úfeature_index_maprÃ   s      r!   Úprune_featuresr.    s‘   € à×ÑÔà×*Ñ*öØ¨a¯n©nÐ@Q×@VÑ@VÓ@XÒ.XŠò€DÔð ×$Ñ$ò ;ˆØ*¨1¯>©>Ñ:ˆ�ð;ä  ×!8Ñ!8Ó9€DÔÜ�×&Ñ&Ó'Ð'ùòs   Ÿ!B!ÁB!c                óª  — | j                  «        | j                  D ]*  }|j                  €Œ|j                  j                  |«       Œ, | j                  r | j                  d   j                  �#| j                  d   j                  j                  sd| j                  j                  «        | j                  r>| j                  d   j                  €Œ@| j                  d   j                  j                  sŒdt        | j                  «      | _        t        |«      D ��ci c]  \  }}||“Œ
 }}}t        | d«      rl| j                  D �cg c]  }|j                  |v r|‘Œ c}| _
        | j                  D ]  }||j                     |_        Œ t        | j                  «      | _        t        | j                  xs t        | dd«      «      S c c}}w c c}w ©NrÁ  r   ÚLookupVariationCountr   )rï  r!  r  r  r*  Úpopr2   ÚFeatureVariationCountr9   r’  r   r  r1  rg   rŸ   )r'   r
  rÃ   r  r  Úfeature_mapr  s          r!   r  r    s½  € à×ÑÔØ×(Ñ(ò HˆØ×%Ñ%Ñ1Ø×&Ñ&×6Ñ6°ÕGðHð
 ×
%Ò
%Ø×#Ñ# BÑ'×@Ñ@ÐHØ×*Ñ*Øñ
ç
"Ñ
"×#4Ñ#4ð5ð 	×#Ñ#×'Ñ'Ô)ð ×
%Ò
%Ø×#Ñ# BÑ'×@Ñ@ÑHØ×*Ñ*Øñ
ç
"Ñ
"×#4Ñ#4ñ5ô
 "% T×%@Ñ%@Ó!A€DÔä,5°oÓ,F×G¡  S�3˜‘8ÐG€KÑGÜˆtÐ,Ô-ð ×4Ñ4ö&
àØ×"Ñ" kÑ1ò ò&
ˆÔ"ð
 ×0Ñ0ò 	CˆFØ"-¨f×.AÑ.AÑ"BˆFÕð	Cä$'¨×(BÑ(BÓ$CˆÔ!ä�×*Ñ*ÒV¬g°dÐ<RÐTUÓ.VÓWÐWùó Hùò&
s   ÄG
ÅGc                ób  — | j                  «        | j                  D ]*  }|j                  €Œ|j                  j                  |«       Œ, | j                  r | j                  d   j                  �#| j                  d   j                  j                  sd| j                  j                  «        | j                  r>| j                  d   j                  €Œ@| j                  d   j                  j                  sŒdt        | j                  «      | _        t        | d«      rl| j                  D �cg c]  }|j                  |v r|‘Œ c}| _	        | j                  D ]  }||j                     |_
        Œ t        | j                  «      | _        t        | j                  xs t        | dd«      «      S c c}w r0  )rï  r!  r  r.  r*  r2  r2   r3  r’  r   r  r1  rg   rŸ   )r'   r-  rÃ   r  s       r!   r.  r.  =  s™  € à×ÑÔØ×(Ñ(ò IˆØ×%Ñ%Ñ1Ø×&Ñ&×5Ñ5Ð6GÕHðIð
 ×
%Ò
%Ø×#Ñ# BÑ'×@Ñ@ÐHØ×*Ñ*Øñ
ç
"Ñ
"×#4Ñ#4ð5ð 	×#Ñ#×'Ñ'Ô)ð ×
%Ò
%Ø×#Ñ# BÑ'×@Ñ@ÑHØ×*Ñ*Øñ
ç
"Ñ
"×#4Ñ#4ñ5ô
 "% T×%@Ñ%@Ó!A€DÔäˆtÐ,Ô-ð ×4Ñ4ö&
àØ×"Ñ"Ð&7Ñ7ò ò&
ˆÔ"ð
 ×0Ñ0ò 	IˆFØ"3°F×4GÑ4GÑ"HˆFÕð	Iä$'¨×(BÑ(BÓ$CˆÔ!ä�×*Ñ*ÒV¬g°dÐ<RÐTUÓ.VÓWÐWùò&
s   Ä*F,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éÿÿ  )ÚReqFeatureIndexr[   r  r2   r  rg   )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                ó8  — |j                  | j                  d«      | _        | j                  D �cg c]  }||j                  «       v sŒ||   ‘Œ c}| _        t	        | j                  «      | _        t        | j
                  xs | j                  dk7  «      S c c}w r7  )rÔ  r9  r  r,  r2   r  rg   )r'   r-  r  s      r!   r.  r.  j  s�   € à,×0Ñ0°×1EÑ1EÀuÓM€DÔà&*×&7Ñ&7öØ!"¸1Ð@Q×@VÑ@VÓ@XÒ;XÐ˜!Óò€DÔô ˜D×-Ñ-Ó.€DÔÜ�×!Ñ!ÒB T×%9Ñ%9¸UÑ%BÓCÐCùò	s   °BÁBc                óŠ   — | j                   d d  }| j                  dk7  r|j                  | j                  «       t        |«      S r7  )r  r9  r#  r   r	  s     r!   Úcollect_featuresr<  t  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ÚLangSysr2   ÚLangSysCountrg   )r'   r
  ÚkeepEmptyDefaultLangSysr3   s       r!   r  r  |  s‘   € ð 	×ÒØ×#Ñ#×3Ñ3°OÔDÙ'à"ˆÔà×%Ñ%öØ¨¯©×)BÑ)BÀ?Õ)SŠò€DÔô ˜D×.Ñ.Ó/€DÔÜ�×!Ñ!Ò8 T×%8Ñ%8Ó9Ð9ùò	ó   ¿ B)Á B)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   )r>  r.  r?  r@  r2   rA  rg   )r'   r-  rB  r3   s       r!   r.  r.  ‹  s“   € ð 	×ÒØ×#Ñ#×2Ñ2Ð3DÔEÙ'à"ˆÔà×%Ñ%öØ¨¯©×)AÑ)AÐBSÕ)TŠò€DÔô ˜D×.Ñ.Ó/€DÔÜ�×!Ñ!Ò8 T×%8Ñ%8Ó9Ð9ùò	rC  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'   r3   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  Ú	ScriptTagr2   ÚScriptCountrg   )r'   r
  Úretain_emptyrd   s       r!   r  r  ¢  sp   € ð
 ×"Ñ"öàØ�8‰8×#Ñ# O°Q·[±[ÀFÑ5JÔKÙò 	
ò€DÔô ˜4×,Ñ,Ó-€DÔÜ�× Ñ Ó!Ð!ùòó   �4A:c                óþ   — | j                   D �cg c]/  }|j                  j                  ||j                  dk(  «      s|r|‘Œ1 c}| _         t	        | j                   «      | _        t        | j
                  «      S c c}w rG  )rI  rJ  r.  rK  r2   rL  rg   )r'   r-  rM  rd   s       r!   r.  r.  ¯  sq   € ð
 ×"Ñ"öàØ�8‰8×"Ñ"Ð#4°a·k±kÀVÑ6KÔLÙò 	
ò€DÔô ˜4×,Ñ,Ó-€DÔÜ�× Ñ Ó!Ð!ùòrN  c                óN   — t        t        d„ | j                  D «       g «      «      S )Nc              3  óP   K  — | ]  }|j                   j                  «       –— Œ  y ­wr   )rJ  r<  ©r   rd   s     r!   r"   z#collect_features.<locals>.<genexpr>¾  s   è ø€ ÒR¸1˜1Ÿ8™8×4Ñ4×6ÑRùs   ‚$&)r   ré  rI  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'   rd   ÚstrikeÚindexSubTableÚnr6   s         r!   ri   ri   Â  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'   rd   rX  r   r]  s        r!   ri   ri   Î  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Ù   )rU  rX   r(   )r'   rd   rX  r   s       r!   ri   ri   Ù  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Ÿ   rc  r   r­  rÓ  r«  r(   rð  r®  re   )r'   rd   r
  r  Úorig_glyphsr6   s         r!   re   re   á  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­  ri   r  )r'   rd   r  s      r!   ri   ri   ÿ  sJ   € à�‰€A„HØ‡z�z×ÒØŸ™×.Ñ.×<Ñ<¸QÓ?‰àˆØ×Ñ˜Ô'Ør+   c                óF   — | j                   t        j                  d«      k(  S )Nr`  )r“  r   ÚgetTableClassr˜   s    r!   Úretain_empty_scriptsrl  
  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.rc  N)
r¬  r­  r  re  rŸ   rc  r   r  rd  rl  )r'   r  r
  s      r!   r  r    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ô  (  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 lookupsrc  N)r¬  rd  r<  re  r   rŸ   rc  r   r­  rú  r  rô  )r'   rE   r
  r  s       r!   Úprune_lookupsrp  /  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 rb  )
r¬  re  r9   r  r  r  rŸ   rc  rd  rl  )r'   Úfeature_tagsr6   r  r
  s        r!   Úsubset_feature_tagsrs  G  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)r=   Úsplitr°  ÚljustÚ
setdefaultr¬  rd  rI  rK  r2   rL  rJ  r?  Ú
LangSysTagrA  r>  )
r'   ÚtagsÚlangsysÚscript_tagsÚtagÚ
script_tagÚlang_tagrd   r  r3   s
             r!   Úsubset_script_tagsr‚  Z  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                   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 and duplicate features in FeatureList
    Remove unreferenced features and remap duplicate feature indices in ScriptList and FeatureVariations
    rc  N)
r¬  rd  r<  Úremap_duplicate_featuresre  r  rŸ   rc  r.  rl  )r'   r
  r-  s      r!   r.  r.  u  sË   € ð
 ‡z�z×ÒØŸ*™*×/Ñ/×@Ñ@ÓB‰àˆØ)-×)FÑ)FÀÓ)WÑ&€OÐ&à‡z�z×ÒØ�
‰
×Ñ×.Ñ.¨Ô?Üˆt�z‰zÐ.°Ô5Ø�
‰
×$Ñ$×3Ñ3Ð4EÔFØ‡z�z×ÒØ�
‰
×Ñ×,Ñ,Ø˜t×8Ñ8Ó:õ	
ð r+   c                óœ  — | j                   j                  j                  }i }i }t        t        | j                   dd«      dg «      D �ch c]  }|j                  ’Œ }}|D ]x  }||   }|j
                  }	|j                  |	«      }
|
€t        |g«      ||	<   |||<   Œ<d}|
D ]  }||vsŒ||vsŒ||   |k(  sŒd}|||<    n |rŒc|
j                  |«       |||<   Œz i }d}|D ]7  }|j                  ||«      }|j                  |«      }|€|||<   |dz  }Œ3|||<   Œ9 t        t        d„ |j                  «       D «       g «      «      }||fS c c}w )	zPReturn retained feature indices(without duplicates) and remapped feature indicesrc  Nr   FTr   r„   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr   )rW   rR  s     r!   r"   z+remap_duplicate_features.<locals>.<genexpr>À  s   è ø€ Ò7˜ŒT�!�WÑ7ùro  )r¬  re  r  rŸ   r  r  rÔ  r=   r°  r   ré  rX   )r'   r
  ÚfeaturesÚunique_featuresÚduplicate_featuresr  Úlookup_variation_featuresr6   r  r  Úsame_tag_featuresÚfoundÚother_ir4  Únew_idxÚunique_irN   Úretained_feature_indicess                     r!   r„  r„  Š  s¶  € ð �z‰z×%Ñ%×3Ñ3€Hà€OØÐô Ü�D—J‘JÐ 3°TÓ:Ø#Øó
ö!àð 	×Óð!Ðð !ð ò &ˆØ�Q‰KˆØ�l‰lˆà+×/Ñ/°Ó4ÐØÐ$Ü#&¨ s£8ˆO˜CÑ Ø$%Ð˜qÑ!ØàˆØ(ò 	ˆGàÐ2Ò2ØÐ#<Ò<Ø˜WÑ%¨Ó*à�Ø(/Ð" 1Ñ%Ùð	ò Ø×!Ñ! !Ô$Ø$%Ð˜qÒ!ð/&ð4 €KØ€Gàò ˆØ%×)Ñ)¨!¨QÓ/ˆØ�O‰O˜HÓ%ˆØˆ9Ø$ˆK˜‰NØ�q‰L‰GàˆK˜ŠNðô  *ÜÑ7˜o×4Ñ4Ó6Ô7¸Ó<ó Ðð % kÐ2Ð2ùòc!s   Á	E	c                óÌ   — d|j                   vr| j                  |j                   «       d|j                  vr| j                  |j                  «       | j	                  d¬«       y)Nr   Fr´   T)Úlayout_scriptsr‚  Úlayout_featuresrs  rp  r"  s      r!   Úprune_pre_subsetr”  Å  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 r7  )r¬  rd  re  r  rI  rJ  r>  r?  r@  r2   r  r9  r±  Úremove)r'   r¬  r‡  rd   r.   Úlrr3   r6   s           r!   Úremove_redundant_langsysr˜  Ñ  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«      rn|j                  r@|j                  r-|j                  j                  st        |j                  dg «      sd |_        |j                  s|j                  dk(  rd|_        y)Nrc  r   i  é   T)r¬  rp  r­  r²   re  r˜  r.  r’  rc  r!  rŸ   ÚVersion©r'   r)   r±   r¬  s       r!   r²   r²   ñ  sÕ   € à�J‰J€Eà×ÑÔà×ÒØ×Ñ×*Ñ*¨4°Ô9ð ×ÒØ ˆÔà×ÒØ×%Ñ%Ô'à×ÑÔô ˆuÐ)Ô*à×"Ò"Ø×Òà×'Ñ'×>Ò>Ü˜5×2Ñ2Ð4KÈRÔ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)ri  r¬  ÚLigCaretListrŒ   rA   r7   r}   r2   ÚLigGlyphCountÚMarkAttachClassDefrI   rM   ÚGlyphClassDefÚ
AttachListr’   ÚAttachPointr’  rŸ  r9   r(   rß  )r'   rd   r(   r¬  r4   r   rN   r’   r6   ÚmarkGlyphSetsÚcoverager{   s               r!   ri   ri   $	  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           	     óV  — d| vry | d   }|j                   }t        |dd «      €y |j                  }t        «       }|j	                  |«       dD ]%  }|| v sŒ| |   j                   j	                  |«       Œ' |D �ch c]J  }|dz	  t        |j                  «      k  r-|dz  t        |j                  |dz	     j                  «      k  r|’ŒL }}|j                  |«      }t        «       }|j                  ||¬«       dD ]'  }|| v sŒ| |   j                   j                  ||¬«       Œ) y c c}w )Nr�  ÚVarStore)r`  rg  ÚMATHÚJSTFé   r8  )Údone)
r¬  rŸ   r©  r=   Úcollect_device_varidxesr2   ÚVarDataÚItemÚsubset_varidxesÚremap_device_varidxes)	r)   Úgdefr¬  ÚstoreÚusedVarIdxesr  r[   Ú
varidx_mapr­  s	            r!   Ú
_pruneGDEFr·  G	  s=  € Ø�TÑØØ�‰<€DØ�J‰J€EÜˆu�j $Ó'Ð/Øà�N‰N€Eä“5€Lð 
×!Ñ! ,Ô/Ø/ò BˆØ�$Š;Ø�‰I�O‰O×3Ñ3°LÕAðBð "öàØ�B‰;œ˜UŸ]™]Ó+Ò+Ø�F‰NœS §¡¨u¸©{Ñ!;×!@Ñ!@ÓAÒAò 	ð€Lð ð ×&Ñ& |Ó4€Jô ‹5€DØ	×Ñ 
°ÐÔ6Ø/ò IˆØ�$Š;Ø�‰I�O‰O×1Ñ1°*À4Ð1ÕHñIùòs   Á:AD&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«      rFt        |«       |j                  �|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 )Nr©  r   i  i  rŸ  rš  )r¬  r   r¡  r¢  rI   r£  r¤  r’   r’  r·  r©  ÚVarDataCountr›  rŸ  rŒ   rg   rœ  s       r!   r²   r²   k	  s�  € à�J‰J€Eà×Ò %×"4Ñ"4×"BÒ"BØ!ˆÔØ×Ò¨×(@Ñ(@×(JÒ(JØ#'ˆÔ Ø×Ò 5×#6Ñ#6×#@Ò#@Ø"ˆÔØ×Ò × 0Ñ 0× ;Ò ;ØˆÔÜˆu�jÔ!Ü�4ÔØ�>‰>Ð! U§^¡^×%@Ñ%@ÀAÒ%EØ�}‰} 
Ò*Ø *�”ä�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’  rg   ©r'   r)   r±   Úts       r!   r”  r”  Ž	  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   )ri  r½  r¼  rM   rg   )r'   rd   r(   r¿  rû   r÷   rN   s          r!   ri   ri   •	  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_emptiedrg   ©r'   rd   r   s      r!   ri   ri   ¢	  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!   ri   ri   ª	  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 rh  )rÉ  rM   r/   r(   rÅ  rg   )r'   rd   Úszr3   r   s        r!   ri   ri   ²	  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(   ÚAnchorsr2   ©r'   rd   r¬  rk   s       r!   ri   ri   »	  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'   rd   r¬  s      r!   re   re   Å	  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Ô  ÚDefaultBaseliner2   r   rX   Úmost_commonrM   )r'   rd   r¬  rk   Ú	baselinesÚ
mostCommonÚ_cntr÷   s           r!   ri   ri   Ì	  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(   ÚCaretsr2   rÐ  s       r!   ri   ri   à	  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!   r”  r”  ì	  s-   € à×Ò G×$:Ò$:Ø.0ˆ�‰˜Ÿ™¨Ñ*Ñ+Ør+   c                óª   — t        | j                  |j                  «      | _        t        | j                  «      | _        t        | j                  «      S r   )r/   rå  r(   r2   Ú
glyphCountrg   rÍ  s     r!   ri   ri   ó	  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 rh  )rb   rM   Úlast_retained_glyphÚreverseEmptiedGlyphMapÚlast_retained_order)	rd   r¶  Ú	table_mapr›  rN   Úmap_Úlast_idxr   r6   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¬  r=   ÚAdvWidthMapr/   rb   r(   ra   rX   ÚreverseOrigGlyphMapÚcopyr±   Úretain_gidsÚLsbMapÚRsbMapr©  r±  rð  ©r'   rd   r¬  ÚusedÚ	advIdxes_ÚretainAdvMapr¶  s          r!   ri   ri   
  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¬  r=   ÚAdvHeightMapr/   rb   r(   ra   rX   r÷  rø  r±   rù  ÚTsbMapÚBsbMapÚVOrgMapr©  r±  rð  rü  s          r!   ri   ri   +
  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Ù   )ÚVOriginRecordsrM   r(   r2   ÚnumVertOriginYMetricsrh   s       r!   ri   ri   V
  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(   ÚOpticalBoundsDeltasr2   ÚOpticalBoundsPointsrÐ  s       r!   ri   ri   _
  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!   r”  r”  t
  s   € à×ÒØˆŒØr+   c                ó   — g | _         yrÙ   )Ú
extraNamesrÍ  s     r!   ri   ri   {
  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   rX   rØ  rM   r2   )r'   rd   r  r   rÚ  rÛ  s         r!   ri   ri   �
  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                  t        j                  j
                  hv r‰j                  | j                  «       y y r   )r‹   r   ÚPaintFormatÚ
PaintGlyphÚPaintGlyph2ÚPaintColrGlyphr°  ÚGlyph)ÚpaintÚresults    €r!   Úcallbackz$_paint_glyph_names.<locals>.callback›
  sX   ø€ Ø�<‰<Ü× Ñ ×+Ñ+Ü× Ñ ×,Ñ,Ü× Ñ ×/Ñ/ð
ñ 
ð
 �J‰J�u—{‘{Õ#ð
r+   )r=   Ú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 rh  )ÚversionÚ_decompileColorLayersV0r¬  ÚColorLayersÚBaseGlyphListÚBaseGlyphPaintRecordÚ	BaseGlyphÚPaintÚColorLayersV1r(   r=   rÔ  r°  r¢   ra   r'  )r'   rd   rÜ   Ú	decomposeÚlayersr   Úlayerr"  s           r!   re   re   §
  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.unbuilderr6  ÚfontTools.colorLib.builderr7  r8  Úglyphs_colredr(   r,  r*  rg   r¬  Ú	LayerListr-  r1  ÚClipListÚclipsr.  r¢   ÚcolorID)
r'   rd   r6  r7  r8  r   ÚcolorGlyphsV1r>  ÚlayersV0r4  s
             r!   ri   ri   Å
  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’  rE  r#  rF  Ú	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   r8  r?  rE  r„   )rÔ  r   rW   r*  r,  rX   r?  r#  r¬  ÚLayerRecordArrayÚLayerRecordrE  r-  r.  r0  r%  r=   r,  Úpalettesr9   r2   r%   r’  ÚAssertionErrorÚnumPaletteEntriesÚpaletteEntryLabelsrg   )r'   r)   r±   r&  rJ  r3  r4  r  Úretained_palette_indicesÚpaletter6   r{   Ú	new_indexÚ	old_indexÚkept_labelsÚlabelrI  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   )r=   ÚMathGlyphVariantRecordr°  ÚVariantGlyphÚGlyphAssemblyÚPartRecordsrk   )r'   r(   ÚvariantsrN   rÂ   s        r!   re   re   6  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(   r=   ÚVertGlyphCoverager:   ra   ÚVertGlyphConstructionre   ÚHorizGlyphCoverageÚHorizGlyphConstruction)r'   rd   r(   r\  r4   r6   s         r!   re   re   A  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Œ   rA   r(   r7   ÚVarCompositeGlyphsÚVarCompositeGlyphrg   ©r'   rd   r4   s      r!   ri   ri   S  si   € à�j‰j×!Ñ!×(Ñ(¨¯©Ó2€GÜ6BØ�
‰
×%Ñ%×7Ñ7¸ó7€D‡J�J×!Ñ!Ô3ô �—
‘
×-Ñ-×?Ñ?Ó@Ð@r+   c                óP  — | j                   j                  €y t        | j                   j                  j                  «      D ��ci c]  \  }}||“Œ
 }}}| j                   j                  j
                  }|j                  }t        «       }t        |«      }|rŠ|}	t        «       }|	D ]u  }||v rŒ|j                  |«       |j                  |«      }
|
€Œ-||
   }|j                  D ]5  }|j                  }|j                  |«       ||vsŒ%|j                  |«       Œ7 Œw |rŒ‰y y c c}}w r   )r¬  rd  r9   rŒ   r(   re  r=   r°  rÔ  Ú
componentsÚ	glyphName)r'   rd   r6   ri  ÚglyphMapÚglyphRecordsr(   rÙ  r  ÚoldNewÚidxrk   Úcompr¢   s                 r!   re   re   \  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Ñ#ØØ�K‰K˜	Ô"Ø—,‘,˜yÓ)ˆCØˆ{ØØ  Ñ%ˆEØ×(Ñ(ò "�Ø—~‘~�Ø—
‘
˜4Ô Ø˜wÒ&Ø—G‘G˜D•Mñ	"ð	"ô ùó Xs   ÁD"c                ó   — | j                   }|j                  }|�û|j                  }t        «       }|j                  j
                  D ];  }|j                  D ]*  }|j                  €Œ|j                  |j                  «       Œ, Œ= t        |«      }|r}t        ||«      |_        t        |«      D �	�
ci c]  \  }	}
|
|	“Œ
 }}	}
|j                  j
                  D ]4  }|j                  D ]#  }|j                  €Œ||j                     |_        Œ% Œ6 nd |_        |j                  }|�û|j                  }t        «       }|j                  j
                  D ];  }|j                  D ]*  }|j                  €Œ|j                  |j                  «       Œ, Œ= t        |«      }|r}t        ||«      |_        t        |«      D �	�
ci c]  \  }	}
|
|	“Œ
 }}	}
|j                  j
                  D ]4  }|j                  D ]#  }|j                  €Œ||j                     |_        Œ% Œ6 nd |_        |j                  }|�Ft        «       }|j!                  |«       |j#                  |«      }|j%                  |«       |sd |_        yc c}
}	w c c}
}	w rÙ   )r¬  ÚAxisIndicesListr°  r=   rd  re  rh  ÚaxisIndicesIndexr°  r%   r7   r9   ÚConditionListÚConditionTableÚconditionIndexÚMultiVarStoreÚcollect_varidxesr±  Úremap_varidxes)r'   r)   r±   r¬  ÚaxisIndicesListrM   ÚusedIndicesrk   rn  r  r  rb   ÚconditionListÚconditionTablesr´  rµ  r¶  s                    r!   r²   r²   y  s„  € à�J‰J€Eà×+Ñ+€OØÐ"Ø×$Ñ$ˆÜ“eˆØ×-Ñ-×?Ñ?ò 	;ˆEØ×(Ñ(ò ;�Ø×(Ñ(Ñ4Ø—O‘O D×$9Ñ$9Õ:ñ;ð	;ô ˜[Ó)ˆÙÜ#/°°{Ó#CˆOÔ Ü09¸+Ó0F×G¡H C¨�s˜C‘xÐGˆGÑGØ×1Ñ1×CÑCò O�Ø!×,Ñ,ò O�DØ×,Ñ,Ñ8Ø07¸×8MÑ8MÑ0N˜Õ-ñOñOð
 %)ˆEÔ!à×'Ñ'€MØÐ Ø'×6Ñ6ˆÜ“eˆØ×-Ñ-×?Ñ?ò 	9ˆEØ×(Ñ(ò 9�Ø×&Ñ&Ñ2Ø—O‘O D×$7Ñ$7Õ8ñ9ð	9ô ˜[Ó)ˆÙÜ+7¸ÈÓ+UˆMÔ(Ü09¸+Ó0F×G¡H C¨�s˜C‘xÐGˆGÑGØ×1Ñ1×CÑCò K�Ø!×,Ñ,ò K�DØ×*Ñ*Ñ6Ø.5°d×6IÑ6IÑ.J˜Õ+ñKñKð
 #'ˆEÔð ×Ñ€EØÐÜ“uˆØ×Ñ˜|Ô,Ø×*Ñ*¨<Ó8ˆ
Ø×Ñ˜ZÔ(ÙØ"&ˆEÔàùóK Hùó& Hs   Â1I4Æ:I:rª  c                ó|   — | j                   j                  r&| j                   j                  j                  |«       y y r   )r¬  ÚMathVariantsre   rÍ  s     r!   re   re   °  s,   € à‡z�z×ÒØ�
‰
×Ñ×.Ñ.¨qÕ1ð r+   c                óà   — | j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )rŒ   rA   r(   r7   ÚItalicsCorrectionr2   ÚItalicsCorrectionCountrg   rf  s      r!   ri   ri   ¶  sS   € à�m‰m×"Ñ" 1§8¡8Ó,€GÜ)¨$×*@Ñ*@À'ÓJ€DÔÜ"% d×&<Ñ&<Ó"=€DÔÜ�×+Ñ+Ó,Ð,r+   c                óà   — | j                   j                  |j                  «      }t        | j                  |«      | _        t        | j                  «      | _        t        | j                  «      S r   )ÚTopAccentCoveragerA   r(   r7   ÚTopAccentAttachmentr2   ÚTopAccentAttachmentCountrg   rf  s      r!   ri   ri   ¾  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   )ÚMathKernCoveragerA   r(   r7   ÚMathKernInfoRecordsr2   ÚMathKernCountrg   rf  s      r!   ri   ri   Æ  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Ù   )ÚMathItalicsCorrectionInfori   ÚMathTopAccentAttachmentÚMathKernInfoÚExtendedShapeCoveragerA   r(   rÍ  s     r!   ri   ri   Î  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^  rA   Úglyphs_wo_math_closurer7   r_  r2   ÚVertGlyphCountr`  ra  ÚHorizGlyphCountrf  s      r!   ri   ri   Û  s    € à×ÒØ×(Ñ(×/Ñ/°×0HÑ0HÓIˆÜ%1°$×2LÑ2LÈgÓ%VˆÔ"Ü! $×"<Ñ"<Ó=ˆÔà×ÒØ×)Ñ)×0Ñ0°×1IÑ1IÓJˆÜ&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¬  ÚMathGlyphInfori   r}  rÍ  s     r!   ri   ri   ê  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  }|r|dz  rdnd}|dz   }||z   }	t        j                  |||	 d	«      }
||
   }
|
j                  |d	«      |||	 |	}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Ý  i    r–   Úbigrv  é@   é€   é    )ÚdataÚstructÚunpackÚ	bytearrayr¯   Ú
from_bytesÚto_bytes)r'   Ú
glyphidmapÚextendedrœ  r6   ÚmoreÚflagsÚglyphIDSizeÚglyphIDStartÚ
glyphIDEndÚglyphIDs              r!   ÚremapComponentsFastrª  ô  s*  € à�9Š9œŸ™ d¨D¯I©I°b°q¨MÓ:¸1Ñ=ÀÒBØÜ  §¡Ó+Ð+€Dˆ4Œ9Ø
€AØ€DÙ
Ø�a‘˜A‘  a¨!¡e¡Ñ,ˆÙ#¨°ª‘a¸AˆØ˜1‘uˆØ! KÑ/ˆ
Ü—.‘.  l°:Ð!>ÀÓFˆà˜WÑ%ˆØ(/×(8Ñ(8¸ÀeÓ(Lˆˆ\˜*Ð%ØˆÜ�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(   r=   ÚgetComponentNamesr°  ra   )r'   rd   ÚglyphSetr2  rh  r   Úglr{   s           r!   re   re     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!   r”  r”  %  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                  || 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œ  )r£  r•  r+   T)r/   r(   r±   rù  r9   ræ  rX   r’  rª  r£  r   ÚgetTableModuler!  rÅ  rœ  )
r'   rd   r6   r   r4   rZ  ÚoÚglyphmaprN   r!  s
             r!   ri   ri   /  sA  € ä˜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Ø—‘×#Ñ#Ó%ò 	HˆAÜ�q˜&Õ!Ø×%Ñ% h¸¿¹Ð%ÕGð	Hô × Ñ  Ó(×.Ñ.€EØ×Ñò "ˆÙ›ˆ�‰�A‰Ø!ˆ�‰�A‰Õð"ð —?‘?öØ a¨1¯8©8¡m°q¸A×<LÑ<LÒ7LŠò€D„Oð ùó NùÛ8ùòs   ÁE.Á+E.Â E4Ä?!E:Å!E:c                ó–   — |j                    }| j                  j                  «       D ]  }|j                  || j                  ¬«       Œ! y)N)Úremove_hintingr£  T)r­   r(   rX   Útrimr£  )r'   r)   r±   r·  rN   s        r!   r²   r²   C  sC   € à Ÿ™Ð(€NØ�[‰[×ÑÓ!ò FˆØ	�‰˜n°t·}±}ˆÕEðFàr+   c                óÜ   — | j                   j                  rVt        «       }| j                  D ]!  }t	        |«      }|€Œ|j                  |«       Œ# | j                  j                  |«       y y r   )r±   Úbidi_closurer=   Úunicodes_requestedr   r°  ra   )rd   Úadditional_unicodesÚuÚmirror_us       r!   Ú_cmap_add_bidi_mirroringr¿  K  se   € à‡y�y×ÒÜ!›eÐØ×%Ñ%ò 	2ˆAÜ “{ˆHØÑ#Ø#×'Ñ'¨Õ1ð	2ð 	
×Ñ×#Ñ#Ð$7Õ8ð r+   c                óH  ‡‡‡— | j                   D �cg c]  }|j                  «       sŒ|‘Œ }}t        «       }d }d }|D �]¯  }	|	j                  dv rÚt        «       }
|	j                  j                  «       D ]�  \  ŠŠ‰‰j                  vrŒ‰D ��cg c]  \  }}|‰j                  v r
‰|f|vr||f‘Œ }}}|
j                  ˆˆfd„|D «       «       |D ��ch c]  \  }}|’Œ	 }}}d |v r|j                  d «       ‰j                  j                  |«       ŒŸ |€|
n|j                  |
«      }Œì|	j                  Š‰j                  j                  ‰j                  «       «      }|j                  |«       | j                  dk(  r%|D �ch c]  }‰|   ‰j                  d   k7  sŒ|’Œ }}|j                  |«       ‰j                  j                  ˆfd„|D «       «       |€|n|j                  |«      }�Œ² ||xs
 t        «       |xs
 t        «       fS c c}w c c}}w c c}}w c c}w )N©é   é   c              3  óR   •K  — | ]  \  }}|‰j                   d    k7  sŒ‰|f–— Œ  y­wr«   )Úorig_glyph_order)r   r½  r   rd   ÚvarSelectors      €€r!   r"   z'_cmap_closure_glyphs.<locals>.<genexpr>k  s2   øè ø€ ò !Ù)-¨¨A¸AÀ×ASÑASÐTUÑAVÓ<V�[ !Ô$ñ!ùs   ƒ'ž	'ÚDMAPr   c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   r   )r   r½  Úcmaps     €r!   r"   z'_cmap_closure_glyphs.<locals>.<genexpr>�  s   øè ø€ Ò:¨˜D �GÑ:ùr#   )ÚtablesÚ	isUnicoder=   ÚformatÚuvsDictrM   r»  ra   r–  r(   r»   rÉ  r,  Údifference_updateÚtableTagrÅ  )r'   rd   Úexcluded_unicodesÚexcluded_uvsr¿  rÊ  Úmatched_unicodesÚcovered_unicodesÚcovered_uvsr¬  Ú	table_uvsr½  r   ÚmatchesÚ_r(   r»   rÉ  rÆ  s    `               @@r!   Ú_cmap_closure_glyphsrØ  V  s5  ú€ ØŸ™Ö6�A¨¯©­ŠaÐ6€FÐ6Ü“uÐØÐØ€Kð ó )ˆØ�<‰<˜8Ñ#Ü›ˆIØ%*§]¡]×%8Ñ%8Ó%:ò (Ñ!�˜TØ a×&:Ñ&:Ñ:Øð !%÷á˜˜1Ø˜A×0Ñ0Ñ0Ø$ aÐ(°Ñ<ð ˜’Fð�ñ ð × Ñ ô !Ø18ô!ô ð )0×0¡  1š!Ð0�Ñ0Ø˜6‘>Ø—M‘M $Ô'Ø—‘—‘ Õ'ð#(ð( Ð&ñ à ×-Ñ-¨iÓ8ñ ð —:‘:ˆDØ×/Ñ/×<Ñ<¸T¿Y¹Y»[ÓIˆLØ×*Ñ*Ð+<Ô=Ø�}‰} Ò&ð  ,ö Ø¨t°A©w¸!×:LÑ:LÈQÑ:OÓ/O’Að �ð  ð ×#Ñ# LÔ1Ø�H‰H�O‰OÓ:¨\Ô:Ô:ð $Ð+ñ à%×2Ñ2°<Ó@ò ðK)ðX Ð-Ò6´³¸Ò8LÄsÃuÐLÐLùòe 7ùóùó 1ùò s"   ’H¨HÂ"H
ÃH
ÆHÆHrÉ  c                óz   — t        |«       t        | |«      \  }}}|j                  j                  |«      |_        y r   )r¿  rØ  r»  Ú
differenceÚunicodes_missing)r'   rd   rÒ  r×  s       r!   re   re   Œ  s:   € ä˜QÔÜ1°$¸Ó:ÑÐ�a˜ð ×-Ñ-×8Ñ8Ð9IÓJ€AÕr+   c                ó.  — t        |«       t        «       }t        «       }t        «       }d| v rt        | d   |«      \  }}}t        «       }d| v rt        | d   |||¬«      \  }}}||_        ||_        |j
                  j                  ||z  «      |_        y )NrÇ  rÉ  )rÐ  rÑ  )r¿  r=   rØ  Úunicodes_dmapedÚ
uvs_dmapedr»  rÚ  rÛ  )r)   rd   Údmap_unicodesÚdmap_uvsÚmatched_dmap_unicodesÚcmap_unicodesr×  s          r!   Ú_closure_glyphs_cmap_and_dmaprã  •  s¥   € Ü˜QÔä“E€MÜ‹u€HÜ›EÐØ��~Ü9MØ�‰L˜!ó:
Ñ6Ð˜}¨hô “E€MØ��~Ü2Ø�‰LØØ+Ø!ô	
Ñˆ�q˜!ð &€AÔØ€A„LØ×-Ñ-×8Ñ8Ø Ñ-ó€AÕr+   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                  «      | _        | j                  dk(  xs t        | j                  «      S c c}w c c}w c c}w )Nr   rÉ  )
Úlegacy_cmaprÊ  rË  ÚisSymbolÚsymbol_cmaprÌ  r2   ÚnumSubTablesrÏ  rg   r¾  s       r!   r”  r”  °  s¶   € à×Òà"&§+¡+ÖO˜Q°·±´À!Ç*Á*Å,’qÒOˆŒØ×ÒØ"&§+¡+ÖB˜Q°Q·Z±Zµ\’qÒBˆŒð #Ÿk™kÖ;˜¨Q¯X©X¸«]’1Ò;€D„KÜ˜DŸK™KÓ(€DÔØ�=‰=˜FÑ"Ò7¤d¨4¯;©;Ó&7Ð7ùò PùâBùò <s#   ›%C8ÁC8Á'C=Á=C=ÂDÂ,Dc                óž  — d |_         | j                  dk(  }|rt        |dd«      nd}|rt        |dd«      nd}g }i }i }| j                  D �]2  }|j                  dk(  r|j
                  dk(  r|||j                  <   |j                  dk(  r|j
                  dk(  r|||j                  <   |j                  dv r´|j                  j                  «       D �	�
��ci c]M  \  }	}
|	|j                  v r:|	|
D ��cg c]+  \  }}||j                  v s||j                  v r
|	|f|vr||f‘Œ- c}}“ŒO c}}}
}	|_        |j                  j                  «       D �	�
ci c]  \  }	}
|
sŒ	|	|
“Œ c}
}	|_        �Œ |j                  «       rÁ|j                  j                  «       D ��ci c]<  \  }}|s||j                  d   k7  r#||j                  v s||j                  v r||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}}|_        �Œ5 |r|nd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vr|j                  sŒn|j                  sŒ,|‘Œ/ }}|s1|r/| j                  D �cg c]  }|j                  «       s||v sŒ|‘Œ c}n|| _        t'        | j                  «      | _        | j                  dk(  xs t+        | j                  «      S c c}}w c c}}}
}	w c c}
}	w c c}}w c c}}w c c}w c c}w )NrÉ  rÝ  r   rÞ  r   r–   r„   rÁ  é   rš  rv  r—  )r(   rÏ  rŸ   rÊ  Ú
platformIDÚ	platEncIDÚlanguagerÌ  rÍ  rM   r»  Úglyphs_requestedrË  rÉ  rÅ  Úmaxr,  r#  r±  r2   rè  rg   )r'   rd   Úis_cmaprÐ  rÑ  Útables_format12_bmpÚtable_plat0_enc3Útable_plat3_enc1r¿  rN   r3   r½  r   Únonempty_tabless                 r!   ri   ri   ¾  s½  € à€A„HØ�m‰m˜vÑ%€GÙ=Dœ Ð#4°bÔ9È"ÐÙ3:”7˜1˜l¨BÔ/À€LàÐØÐØÐà�[‰[ó $RˆØ�<‰<˜1Ò §¡°Ò!1Ø+,Ð˜QŸZ™ZÑ(Ø�<‰<˜1Ò §¡°Ò!1Ø+,Ð˜QŸZ™ZÑ(à�8‰8�xÑð ŸI™IŸO™OÓ-÷	ñ 	ñ �A�qØ˜×,Ñ,Ñ,ð à !÷á˜˜1Ø˜A×.Ñ.Ñ.Ø˜Q×1Ñ1Ñ1°q¸!°fÀLÑ6Pð ˜’Fóñ õ	ˆAŒIð +,¯)©)¯/©/Ó*;×A¡$ ! Qºq˜˜A™ÓAˆAŽIØ�[‰[Œ]ð ŸF™FŸL™L›N÷á�A�qÙ˜q A×$6Ñ$6°qÑ$9Ò9à˜×+Ñ+Ñ+Ø˜Q×1Ñ1Ñ1°aÐ?PÑ6Pð �1‘óˆAŒFð �x‰x˜2Œ~ !§&¤&¬S°·±·±³Ó-?À'Ô-IØ#×*Ñ*¨1Ö-à'(§v¡v§|¡|£~×Q™t˜q !¸¸a×>PÑ>PÒ9P�a˜‘dÓQˆAŽFðI$RñP %,Ñ °ò ˆà�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ðð" —;‘;öØ¨Q¯X©X¸XÑ-E 1§6¤6È1Ï9Ë9Šð€Oð ñ ™?ð —K‘KÖIˆq 1§;¡;¤=°A¸Ò4HŠÓIàð 	„Kô
 ˜DŸK™KÓ(€DÔð �=‰=˜FÑ"Ò7¤d¨4¯;©;Ó&7Ð7ùówùõ	ùó Bùóùó Rùò(ùò 	JsU   ÃP+Ã20P%Ä"P+Å
P3ÅP3ÆAP9ÉP?É0P?Í7QÎQÎ%QÎ=Q
ÏQ
Ð%P+ÚDSIGc                ó    — d| _         g | _        yrâ  )Ú	usNumSigsÚsignatureRecordsr"  s      r!   r”  r”    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!   r”  r”    sP   € à�?Š?Ø×Ñ 
Ò*ØˆDŒMØ%&ˆDÔ"ØˆDŒOØ#$ˆDÔ Ø&'ˆDÔ#Ø$%ˆDÔ!Ø)*ˆDÔ&Ør+   >   r„   r•   r–   rv  é   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                  j                  t        «      }|rt        ||«       | 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„   rv  z.Ú	utf_16_be)r•   r  úr–   r.  )r¬  r  r  T)r   Úvisitr=   Úname_IDsÚseenrW  ÚnameIDÚname_legacyrË  Úname_languagesÚlangIDÚobfuscate_namesr»   ÚNAME_IDS_TO_OBFUSCATEÚ_remap_select_name_idsÚencodeÚstringr#  )r'   r)   r±   ÚvisitorÚnameIDsrZ  ÚnamerecsÚneedRemappings           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ˆŒ
Ø×ÒØˆð  Ÿ™×1Ñ1Ô2GÓHˆÙÜ" 4¨Ô7Ø—‘ò 		ˆAØ�x‰x˜6Ñ!Ø:;¿+¹+¼-˜7Ÿ>™>¨+Ô6ÈW�•Ø—‘˜VÑ#Ø9:¿¹¼˜6Ÿ=™=¨Ô5ÈF�•Ø—‘˜Q’Ø�•Ø—‘˜\Ñ)ØØ�O‰O˜AÕð		ð ˆŒ
Øùò9 DùÚ?ùò >ùò Ss0   ÁH,Á0H,ÂH1Â%H1ÃH6Ã!H6Ä	H;Ä'H;c                ó’  — d| vrd| vry| d   }|j                   D �ch c]  }|j                  ’Œ }}i }|j                  «       dz
  }|D ]'  }|dz  }||vsJ d«       ‚|dkD  rt        d«      ‚|||<   Œ) g }|j                   D ]f  }|j                  |vrŒt	        |j
                  ||j                     |j                  |j                  |j                  «      }	|j                  |	«       Œh |j                   j                  |«       | j                  d«      }
|
�“|
j                  D ]-  }|j                  |j                  |j                  «      |_        Œ/ |
j                  D ]H  }|j                  }|j                  ||«      |_        |j                   }|j                  ||«      |_        ŒJ | j                  d«      }|€y|j"                  j$                  }|j                  ||«      |j"                  _        |j"                  j&                  rP|j"                  j&                  j(                  D ]-  }|j                  |j*                  |j*                  «      |_        Œ/ |j"                  j,                  rQ|j"                  j,                  j.                  D ]-  }|j                  |j0                  |j0                  «      |_        Œ/ yyc c}w )	a;  Remap a set of IDs so that the originals can be safely scrambled or
    dropped.

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

    Finally update references to these in the `fvar` and `STAT` tables.
    ÚfvarÚSTATNr¢   r„   z#_findUnusedNameID did not skip gapsiÿ  z8Ran out of name IDs while trying to remap existing ones.)rW  r  Ú_findUnusedNameIDÚ
ValueErrorr   r  rë  rì  r  r#  r÷  rÔ  ÚaxesÚ
axisNameIDÚ	instancesÚsubfamilyNameIDÚpostscriptNameIDr¬  ÚElidedFallbackNameIDÚDesignAxisRecordÚAxisÚ
AxisNameIDÚAxisValueArrayÚ	AxisValueÚValueNameID)r)   r  r¢   r  ÚexistingIdsÚ	remappingÚnextIdÚnameIdÚcopiedRecordsÚ
recordCopyr  ÚaxisÚinstancer  ÚstatÚelidedNameIDÚvalues                    r!   r  r  P  s”  € ð �TÑ˜f¨DÑ0Øà�‰<€Dð 04¯z©zÖ: V�6—=“=Ð:€KÐ:Ø€IØ×#Ñ#Ó%¨Ñ)€FØò #ˆØ�!‰ˆØ˜[Ñ(ÐOÐ*OÓOÐ(Ø�EŠ>ÜÐWÓXÐXØ"ˆ	�&Òð#ð €MØ—*‘*ò 
)ˆØ�=‰= Ñ-ØÜØ�M‰MØ�f—m‘mÑ$Ø×ÑØ×ÑØ�M‰Mó
ˆ
ð 	×Ñ˜ZÕ(ð
)ð 	‡J�J×Ñ�mÔ$ð
 �8‰8�FÓ€DØÐØ—I‘Iò 	NˆDØ'Ÿm™m¨D¯O©O¸T¿_¹_ÓMˆD�Oð	NàŸ™ò 	FˆHØ×-Ñ-ˆFØ'0§}¡}°V¸VÓ'DˆHÔ$Ø×.Ñ.ˆFØ(1¯©°f¸fÓ(EˆHÕ%ð		Fð �8‰8�FÓ€DØ€|ØØ—:‘:×2Ñ2€LØ&/§m¡m°LÀ,Ó&O€D‡J�JÔ#Ø‡z�z×"Ò"Ø—J‘J×/Ñ/×4Ñ4ò 	NˆDØ'Ÿm™m¨D¯O©O¸T¿_¹_ÓMˆD�Oð	Nà‡z�z× Ò Ø—Z‘Z×.Ñ.×8Ñ8ò 	TˆEØ )§¡¨e×.?Ñ.?À×ARÑARÓ SˆEÕñ	Tð !ùòc ;s   �KÚ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©r}  r�  rŽ  r   r+   r!   ÚOptionErrorr;  ª  ó   „ Ør+   r=  c                  ó   — e Zd Zy)úOptions.UnknownOptionErrorNr<  r   r+   r!   ÚUnknownOptionErrorr@  ­  r>  r+   rA  )r«  rõ  r[  rS  ÚEBSCÚPCLTÚLTSH)ÚFeatÚGlatÚGlocÚSilfÚSill)ÚavarÚBASEr  Úgaspr6  ÚhheaÚHHEArù  ÚMAXPÚvheaÚVHEAúOS/2ÚlocaÚLOCAr¢   ÚcvtÚfpgmÚprepÚVDMXrõ  rB  ÚMVARÚcvarr  )rU  rZ  rV  rW  rÉ  rX  )ÚrvrnÚccmpÚligaÚloclÚmarkÚmkmkÚrlig)ÚfracÚnumrÚdnom)ÚcaltÚcligÚcursrº  Úrclt)ÚvaltÚvertÚvkrnÚvpalÚvrt2ÚltraÚltrmÚrtlaÚrtlmÚrandÚjalt)ÚHarfÚHARFÚBuzzÚBUZZ)ÚchwsÚvchwÚhaltÚvhalÚpalt)
Ú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Úrtlrr  Ú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| _,        d| _-         | j\                  di |¤Ž y )NFTr   )r   r„   r•   r–   rv  é   r  i	  rÁ  r   )/Ú_drop_tables_defaultÚdrop_tablesÚ_no_subset_tables_defaultÚno_subset_tablesÚpassthrough_tablesÚ_hinting_tables_defaultÚhinting_tablesÚlegacy_kernÚlayout_closureÚ_layout_features_defaultr“  r’  Úignore_missing_glyphsÚignore_missing_unicodesr­   r  rå  rç  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Úlazyrº  r=   )r'   Úkwargss     r!   rŒ  zOptions.__init__  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')rM   r’  rA  r×   )r'   rË  r›  rN   s       r!   r=   zOptions.setC  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„   ú-r×  rÍ  zCurrent setting for 'z' is: z5Option '%s' requires values to be specified using '='ú,ú r.  r   Ú
0123456789z+=z-=)r  r#  Úfindr~  Úreplacer’  rA  rŸ   Úprintrü  rg   r¯   ÚstrrW   r=  rx  r2   r÷  r–  r×   )r'   ÚargvÚignore_unknownÚposargsÚpassthru_optionsrû   Úorig_ar6   Úopr›  rN   ÚokÚovÚvvrF  s                  r!   Ú
parse_optszOptions.parse_optsI  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)r}  r�  rŽ  Ú	Exceptionr=  rA  r¬  r®  r±  Ú_layout_features_groupsr   ré  ÚiterrX   rµ  rŒ  r=   râ  r   r+   r!   r9  r9  ©  sÇ   „ ô�iô ô˜[ô òÐð ÒDÑDÐò!Ðò4 NÐò
 KÚ-Ú>Ú<Ø˜ÐØ˜ÐØ�Ø�8Ú3ÚFò
ò +Ú3ò
ñ72Ðñf  *Ù‰DÐ(×/Ñ/Ó1Ó2°BÓ7ó Ðò2òh ð /1ô K*r+   r9  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!   ÚSubsettingErrorré  ˜  r>  r+   rê  c                  ó   — e Zd Zy)ú&Subsetter.MissingGlyphsSubsettingErrorNr<  r   r+   r!   ÚMissingGlyphsSubsettingErrorrì  ›  r>  r+   rí  c                  ó   — e Zd Zy)ú(Subsetter.MissingUnicodesSubsettingErrorNr<  r   r+   r!   ÚMissingUnicodesSubsettingErrorrï  ž  r>  r+   rð  Nc                ó„   — |s
t        «       }|| _        t        «       | _        t        «       | _        t        «       | _        y r   )r9  r±   r=   r»  Úglyph_names_requestedÚglyph_ids_requested)r'   r±   s     r!   rŒ  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-berv  z>%dL)r»  ra   rü  ÚbytesÚdecoder  r2   r�  rž  r°  rò  ró  )r'   r(   ÚgidsÚunicodesÚtextÚ
text_utf32Úncharsr½  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)	Nrº  rg  z
%s droppedr”  z	load '%s'ú
prune '%s'ú%s pruned to empty; droppedú	%s pruned)Ú_sort_tablesÚstripr±   r­  r²  r­   r³  Úlogr$   r   rk  r’  Útimerr”  ©r'   r)   r  Ú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        |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 sd|v r;t#        d«      5  t%        || «       | 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                  rxd	|v sd
|v r@| j                  j3                  |j5                  d«      «       t        j                  d«       n0| j                  j3                  d«       t        j                  d«       | j                  j6                  rxd	|v sd
|v rpt9        t;        dt=        |j                  «       «      «      «      D ],  }| j                  j3                  |j5                  |«      «       Œ. t        j                  d«       t)        | j                  «      | _        d|v r×t#        d«      5  t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       |d   jA                  | «       | j                  j'                  |«       t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _!        | j                  jD                  rÛd|v r×t#        d«      5  t        j                  dt=        | j                  «      «       t        j                  | j                  |¬«       |d   jA                  | «       | 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                  |¬«       ||   jA                  | «       | j                  j'                  |«       t        j                  d|t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       tI        | d|jK                  «       › d�t)        | j                  «      «       �Œ d |v r×t#        d!«      5  t        j                  d"t=        | j                  «      «       t        j                  | j                  |¬«       |d    jA                  | «       | 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                  |¬«       ||   jA                  | «       | 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%   jA                  | «       | j                  j'                  |«       t        j                  d(t=        | j                  «      «       t        j                  | j                  |¬«       d d d «       t)        | j                  «      | _'        t)        | j                  «      | _(        |jS                  «       }| jP                  D �ci c]  }|||   “Œ
 c}| _*        tW        | jT                  jY                  «       «      | _-        |j                  «       | jZ                     | _.        t)        «       | _/        | j                  j`                  r4|| jP                  z
  D �ch c]  }||   | jZ                  k  r|’Œ c}| _/        | j^                  D �ci c]  }|||   “Œ
 c}| _1        | j                  j`                  s‰
D �cg c]  }|| jP                  v sŒ|‘Œ }	}n.‰
D �cg c]#  }|je                  |«      | jZ                  k  sŒ"|‘Œ% }	}|	| _3        t9        t=        |	«      «      D �ci c]  }||	|      |“Œ c}| _4        t        j                  d)t=        | jP                  «      «       | `y # 1 sw Y   �	Œžx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   �Œx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   r1   ©r   r6   Ú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   r1   r  s     €r!   r"   z,Subsetter._closure_glyphs.<locals>.<genexpr>Ý  s"   øè ø€ ò #
Ø°1¼¸KÓ8HÓ3HŒAñ#
ùrQ   zMissing requested glyphs: %srÉ  rÇ  z$close glyph list over character mapszU+%04Xz)Missing glyphs for requested Unicodes: %sr•  ÚGLYFr   zAdded gid0 to subsetz.notdefzAdded .notdef to subsetrv  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_Úedrb  zclose glyph list over 'VARC'z0Closing glyph list over 'VARC': %d glyphs beforez.Closed glyph list over 'VARC': %d glyphs after)r•  r  z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)5r=   ÚgetGlyphOrderrÅ  rî  ra   rò  ró  Úglyphs_missingrÚ  r  r$   r±   r¶  rí  rø  r(   rÛ  r  rã  Úintersection_updater«  Úglyphs_cmapedr·  rð  rã  r°  ÚgetGlyphNamer¸  r±  Úminr2   r�  re   r“  r´  ri  r×   ÚlowerÚglyphs_glyfedÚglyphs_cffedÚglyphs_retainedr&   r÷  rï  rX   rì  rê  rÅ  rù  rë  Ú
getGlyphIDÚnew_glyph_orderÚglyph_index_map)r'   r)   Ú
realGlyphsr½  Úmissingr6   r¬  Úorderr   r  r  s             @r!   Ú_closure_glyphszSubsetter._closure_glyphsÑ  sX	  ø€ Ü˜×+Ñ+Ó-Ó.ˆ
Ø.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‰>˜V t™^ÜÐ=Ó>ñ <Ü-¨d°DÔ9Ø—‘×/Ñ/°
Ô;÷<ô ' t§{¡{Ó3ˆÔØ× Ò Ø-1×-BÑ-BÖC¨�x !“|ÐCˆGÐCÜ�H‰HÐ@À'ÔJØ—<‘<×7Ò7Ø×9Ñ9¸'ÓBÐBØà�<‰<×$Ò$Ø˜‰~ ¨4¡Ø—‘—‘ × 1Ñ 1°!Ó 4Ô5Ü—‘Ð/Õ0à—‘—‘ 	Ô*Ü—‘Ð2Ô3Ø�<‰<×*Ò*Ø˜‰~ ¨4¡Üœ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ˆÔà%ò 	3ˆEØ˜DÑ ØÜÐ3°eÑ;Ó<ñ 3Ü—‘ØDØÜ˜Ÿ™Ó$ôô
 —
‘
˜4Ÿ;™;¨T�
Ô2Ø�U‘×*Ñ*¨4Ô0Ø—‘×/Ñ/°
Ô;Ü—‘ØBØÜ˜Ÿ™Ó$ôô
 —
‘
˜4Ÿ;™;¨T�
Ô2÷3ð 3ð	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÷w<ñ <üò
 D÷*
3ñ 
3ú÷
3ñ 
3ú÷7ñ 7ú÷$
3ñ 
3ú÷ 3ñ 3ú÷$
3ñ 
3üò  $Oùò#ùò 'Qùò Tùòùò 
s�   Æ#(m'Èm4ÎCm9Ò#CnÖ!CnÚ3Cn Þ1Cn-â*Cn:çoéoêoê=oëoë#oì oì#o í'm1í9nînîn	î n*î-n7	î:o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 neededri   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   rk  r  r±   r¯  r  r$   r’  r  r  r(   ri   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¢   Ú
GlyphOrderrR  T)Ú	pruneOnlyz%s Unicode ranges pruned: %sr„   z%s CodePage ranges pruned: %sz%s xAvgCharWidth updated: %dz%s usMaxContext updated: %dr²   rÿ  r   r  )r,  r–  r#  r±   r»  ÚgetUnicodeRangesÚrecalcUnicodeRangesr  r$   r%   r¼  r*  ÚgetCodePageRangesÚrecalcCodePageRangesr½  ÚxAvgCharWidthÚrecalcAvgCharWidthr¾  r
   ÚusMaxContextr   rk  r’  r  r²   )r'   r)   Ú	tableTagsr  Úold_unirangesÚnew_unirangesÚold_codepagesÚnew_codepagesÚold_avg_widthÚnew_avg_widthÚmax_contextr  r¬  r  s                 r!   Ú_prune_post_subsetzSubsetter._prune_post_subset¡  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�  rg  r`  r  rJ  rà  ÚGVARr¢   r•  r  r„   c                ó(   •— ‰j                  | d«      S rh  )rÔ  )r  ÚtagOrders    €r!   r3  z(Subsetter._sort_tables.<locals>.<lambda>â  s   ø€ °8·<±<ÀÀQÓ3G€ r+   )r×  r)  )r9   r%   r,  )r'   r)   r6   r¿  r|  r>  s        @r!   r  zSubsetter._sort_tablesÔ  s`   ø€ ò
ˆô *3°8Ó)<×=¡  A�A�q˜1‘u‘HÓ=ˆÜ�d—i‘i“kÓ'GÔHˆØÖ5�a 1¨Ó#4’Ò5Ð5ùó >ùâ5s   ”AÁ

A"ÁA"c                óÌ   — t        |«      5  | j                  |«       | j                  |«       | j                  |«       | j	                  |«       d d d «       y # 1 sw Y   y xY wr   )r	   r	  r#  r'  r:  )r'   r)   s     r!   rA   zSubsetter.subsetå  sW   € Ü# DÓ)ñ 	*Ø×"Ñ" 4Ô(Ø× Ñ  Ô&Ø×Ñ Ô%Ø×#Ñ# DÔ)÷		*÷ 	*ñ 	*ús   ŒAAÁA#r   )r}  r�  rŽ  rã  rê  rí  rð  rŒ  rý  r	  r#  r'  r:  r  rA   r   r+   r!   rç  rç  —  s\   „ ô˜)ô ô ô ô¨ô ó)ð ! r°B¸Ró 	.ò/ò8sòj5ò61/òf6ó"*r+   rç  z	load fontc                ó$  — t        j                  | ||j                  |j                  ||j                  ¬«      }|rTt        j
                  d«      }|j                  }|j                  |_        |d   }|j                  dk(  rd|_        ||_        |S )N)ÚcheckChecksumsÚrecalcBBoxesÚrecalcTimestamprÊ  Ú
fontNumberr  g       @r  )	r   ÚTTFontr¹  rº  rÈ  rk  Údecode_format_2_0Údecode_format_3_0r  )	ÚfontFiler±   rA  ÚdontLoadGlyphNamesrÊ  r)   r  Úsavedr  s	            r!   Ú	load_fontrK  í  s‹   € ä�<‰<ØØ%Ø×*Ñ*Ø×0Ñ0ØØ×&Ñ&ô€Dñ$ Ü×"Ñ" 6Ó*ˆØ×&Ñ&ˆØ!%×!7Ñ!7ˆÔØ�‰LˆØ�<‰<˜3ÒØˆAŒLØ!&ˆÔà€Kr+   c                óŠ   — t        | t        «      r| j                  «       }|dv ry|dv r|S t        j	                  d| ›d�«      ‚)zyMap an explicit --flavor value to TTFont.flavor.

    Empty string and 'none' (any case) mean uncompressed OpenType.
    )r.  ÚnoneN)ÚwoffÚwoff2zInvalid --flavor z! (use 'woff', 'woff2', or 'none'))rü  rØ  r  r9  r=  )rÀ  r×  s     r!   Ú_normalize_output_flavorrP    sK   € ô
 �&œ#ÔØ�l‰l‹nˆØ�,ÑØØÐ#Ñ#ØˆJÜ
×
Ò
ÚBHÐJóð r+   c                ó(   — | j                   dk(  rdS dS )NÚOTTOz.otfz.ttf)ÚsfntVersionr  s    r!   Ú_sfnt_extensionrT    s   € Ø×%Ñ%¨Ò/ˆ6Ð;°VÐ;r+   zcompile and save fontc                óê   — |j                   r|j                  dk(  rddlm} d|_        |j                  | _        |j
                  | j                  t        <   | j                  ||j                  ¬«       y )NrN  r   )ÚsfntT)ÚreorderTables)
rÁ  rÀ  ÚfontTools.ttLibrV  Ú
USE_ZOPFLIrÄ  Úcfgr   Úsaver¿  )r)   Úoutfiler±   rV  s       r!   Ú	save_fontr]  !  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]rÓ  z[<+>,;&#\\xXuU\n	]rÑ  r„   r¬  )Úrero   rx  r2   r#  r¯   r÷  r±  )rd   r_  r3   ÚitemÚfieldsÚstartÚends          r!   Úparse_unicodesrd  ,  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 )NrÒ  rÓ  rÑ  r„   r   )rÖ  rx  r2   r#  r¯   r÷  r±  )rd   r3   r`  ra  s       r!   Ú
parse_gidsrf  <  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 )NrÒ  rÓ  )rÖ  rx  )rd   s    r!   Úparse_glyphsrh  G  s   € Ø�9‰9�S˜#Ó×$Ñ$Ó&Ð&r+   c                 óz   — t        dt        t        j                  ¬«       t        dt        j                  ¬«       y )Nzusage:©Úfilez2Try fonttools subset --help for more information.
)r×  Ú	__usage__ÚsysÚstderrr   r+   r!   Úusagero  K  s!   € Ü	ˆ(”I¤C§J¡JÕ/Ü	Ð
?ÄcÇjÁjÖQr+   z%make one with everything (TOTAL TIME)c           
     ó  — ddl m} ddlm} | €t        j
                  dd } d| v rt        t        «       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                  }|€|jN                  |_'        n	 tQ        |«      |_'        |€6|jN                  �d&|jN                  z   }ntS        |«      }tU        ||dd'¬(«      }t'        d)«      5  |r|j;                  |jW                  «       «       |r’d*D ]�  }||vrŒ||   jX                  D ]t  }|j[                  «       sŒ|
j;                  |j\                  j_                  «       «       |j`                  d+v sŒL|
j;                  |jb                  j_                  «       «       Œv Œ� d|vsJ ‚	 ddd«       td        jg                  d,|z  «       td        jg                  d-|
«       td        jg                  d.|«       td        jg                  d/|	«       |ji                  ||	|
|¬0«       |jk                  |«       tm        |||«       |j                  rjddl7}td        jg                  d1|jp                  js                  |«      |fz  «       td        jg                  d2|jp                  js                  |«      |fz  «       |jt                  r|jw                  t        jx                  «       |j{                  «        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   �ŒWxY w# 1 sw Y   �ŒÈxY w# 1 sw Y   �Œ.xY w# t        j                  $ r0}t        «        t        d	|t        j                  ¬
«       Y d}~yd}~ww xY w# 1 sw Y   �ŒxY w)3z%OpenType font subsetter and optimizerr   )Úsplitext)ÚconfigLoggerNr„   z--help)	rø  z	gids-filer(   zglyphs-filerú  z	text-filerù  zunicodes-filezoutput-file)rÚ  zERROR:rj  r•   )ÚlevelT)r±   Fr.  r   z--output-file=rÂ  z--text=é   z--text-file=rê  z	utf-8-sig)Úencodingú
z--unicodes=é   z--unicodes-file=r¬  ú#z--gids=z--gids-file=z	--glyphs=é	   z--glyphs-file=)rI  rÊ  ru  z.subset)Ú	extensionÚ	overWriteÚsuffixzcompile glyph list)rÉ  rÇ  rÁ  z
Text: '%s'zUnicodes: %sz
Glyphs: %szGids: %s)r(   rø  rù  rú  zInput font:% 7d bytes: %szSubset font:% 7d bytes: %s)>Úos.pathrq  Ú	fontToolsrr  rm  rÙ  r×  Ú__doc__r9  râ  r=  ro  rn  r2   rÅ  ÚloggingÚINFOÚWARNINGrÆ  r  r,   ÚsetLevelÚDEBUGÚdisabledrç  r  ÚopenÚreadrÖ  r÷  rd  Ú	readlinesrx  rf  rh  r#  r  rÊ  rK  rÀ  rP  rT  r   r  rÊ  rË  rÉ  r,  rÌ  rÍ  r  r$   rý  rA   r]  ÚosÚpathÚgetsizerÇ  ÚsaveXMLÚstdoutÚclose)Úargsrq  rr  r±   ÚeÚfontfileÚ	subsetterr\  r(   rø  rù  Úwildcard_glyphsÚwildcard_unicodesrú  r   r  ÚlinerI  rÊ  r)   Úrequested_flavorÚextr  r¿  r‰  s                            r!   Úmainr˜  P  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 {Ô3ð 3°qØ˜Ÿ™›×(Ñ(¨¨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Ð6FÓGˆGŒNð €Ø�>‰>Ð%Ø˜Ÿ™Ñ&‰Cä! $Ó'ˆCÜ$Ø ¨t¸Iô
ˆô 
Ð#Ó	$ñ  ÙØ�M‰M˜$×,Ñ,Ó.Ô/ÙØ'ò >�Ø˜d‘?ØØ˜c™×)Ñ)ò >�AØ—{‘{•}Ø Ÿ™¨¯©¯©«Ô6ØŸ8™8 xÒ/Ø$ŸO™O¨A¯I©I¯N©NÓ,<Õ=ñ	>ð>ð ˜ÑÐÑ÷ ô ‡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øðG ×Ñò ÜŒÜˆh˜¤§
¡
Õ+Üûðú÷J3ñ 3ú÷Hñ Hú÷@ñ @ú÷Dñ Dûô$ ×"Ñ"ò 	ÜŒGÜ�(˜A¤C§J¡JÕ/Üûð	ú÷ ñ  ús|   ÁY Å5$ZÇ;AZÊAZ Ì>AZ-Ï-Z: Ñ A\ Ò7\ Ó	3\ ÙZÙ&Y>Ù>ZÚZ	ÚZ	Ú Z*	Ú-Z7	Ú:[=Û&[8Û8[=Ü \
)r9  rç  rK  r]  rf  rh  rd  r˜  r   )FT)F)T)r   r   )r)   zttLib.TTFontr  zset[int]ÚreturnÚNone)r   FT)‘Ú
__future__r   r~  r   ÚfontTools.misc.roundToolsr   r   ÚfontTools.ttLib.tablesr   ÚfontTools.ttLib.tables.otBaser   ÚfontTools.ttLib.beyond64kr	   ÚfontTools.otlLib.maxContextCalcr
   ÚfontTools.pens.basePenr   ÚfontTools.misc.loggingToolsr   ÚfontTools.misc.cliToolsr   ÚfontTools.subset.utilr   r   ÚfontTools.subset.cffÚfontTools.subset.svgÚfontTools.varLibr   r   ÚfontTools.ttLib.tables._n_a_m_er   r   ÚfontTools.unicodedatar   rm  r�  Úarrayr€  Úcollectionsr   r   Ú	functoolsr   Útypesr   rl  r  Ú	getLoggerr  r*   r(   r  r/   r7   rŒ   r:   r>   rA   rE   rX  rT   ÚSingleSubstre   ri   Ú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  re  r  r  r  r"  rc  r.  r>  r@  r<  rJ  rd  rk  rl  rp  rs  r‚  r„  r”  r˜  r·  rð  r'  ÚMathGlyphConstructionr}  rŠ  r‹  rŒ  r”  r³  r!  rª  r¿  rØ  rã  r  r  r‘  r9  rç  rK  rP  rT  r]  rd  rf  rh  ro  r˜  Ú__all__r   r+   r!   ú<module>rÅ     sá  ðõ
 #å Ý -Ý Ý +Ý ?Ý <Ý 6Ý *Ý -Ý 6ß 9Ü "Ü "ß 4ß GÝ *Û 
Û Û Û ß ,Ý Ý àG€	ðð ñðWñeð ðT €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ñN ˆX×!Ñ!Ó"ñ	ó #ð	ñ ˆX× Ñ Ó!ñ.5ó "ð.5ñb ˆX× Ñ Ó!ñó "ðñ ˆX×!Ñ!Ó"ñ$5ó #ð$5ñN ˆ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×)Ñ)Ó*ñó +ðñ ˆX×'Ñ'Ó(ñó )ðñ  ˆX×'Ñ'Ó(ñó )ðñ( ˆX×.Ñ.Ó/ñ	(ó 0ð	(ñ ˆX×.Ñ.Ó/ñ	(ó 0ð	(ñ ˆX×'Ñ'Ó(ñXó )ðXñ< ˆX×'Ñ'Ó(ñXó )ðXñ: ˆX×$Ñ$ h×&6Ñ&6Ó7ñDó 8ðDñ ˆX×$Ñ$ h×&6Ñ&6Ó7ñDó 8ðDñ ˆX×$Ñ$ h×&6Ñ&6Ó7ñ'ó 8ð'ñ ˆX�_‰_Óò:ó ð:ñ ˆX�_‰_Óò:ó ð:ñ ˆX�_‰_Óñ0ó ð0ñ ˆX× Ñ Ó!ñ	"ó "ð	"ñ ˆ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ñ73ó Gð73ñt Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñó Gðñ Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ2ó Gð2ñ> Ð ˆU× Ñ  Ó(Ð*=¨%×*=Ñ*=¸fÓ*EÓFñ/ó Gð/ñd Ð ˆU× Ñ  Ó(Ó)ñó *ðòD!IñH Ð ˆ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× Ñ  Ó(Ó)ñ"ó *ð"ñ8 Ð ˆU× Ñ  Ó(Ó)ñ3ó *ð3ñl Ð ˆU× Ñ  Ó(Ó)ñ2ó *ð2ñ
 ˆX×/Ñ/Ó0ñ-ó 1ð-ñ ˆX×-Ñ-Ó.ñ/ó /ð/ñ ˆX×"Ñ"Ó#ñ$ó $ð$ñ ˆX×#Ñ#Ó$ñ	ó %ð	ñ ˆX×"Ñ"Ó#ñó $ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð!ˆU×!Ñ! &Ó)×/Ñ/Ó0òó 1ðñ> Ð ˆU× Ñ  Ó(Ó)ñó *ðñ  Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñó *ðñ& Ð ˆU× Ñ  Ó(Ó)ñó *ðò9ó3Mñl Ð ˆU× Ñ  Ó(Ó)ñKó *ðKòñ6 Ð ˆU× Ñ  Ó(Ó)ñ
8ó *ð
8ñ Ð ˆU× Ñ  Ó(Ó)ñP8ó *ðP8ñf Ð ˆU× Ñ  Ó(Ó)ñó *ðñ Ð ˆU× Ñ  Ó(Ó)ñ
ó *ð
ò 4Ð ñ Ð ˆU× Ñ  Ó(Ó)ñ!ó *ð!óHCTñL Ð ˆU× Ñ  Ó(Ó)ñó *ðô$k*ˆfô k*ô\S*�ô S*ñl
 €{Óòó ðò>ò <ñ ÐÓñ>ó  ð>òò ò'òRñ
 Ð.Ó/ò_ó 0ð_òD	�r+   