Ë
    ÚÍ:jä  ã                  ó¢   — d dl mZ d dlmZ d dlmZmZmZmZ e	e
e
f   Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedk(  rd dlZ ej                  «        yy)	é    )Úannotations)ÚOptional)ÚKerningPairÚKerningDictÚKerningGroupsÚIntFloatNc                ó.  — | |v r||    S |du |du k7  rt        d«      ‚|€Xi }i }|j                  «       D ]A  \  }}|j                  d«      r|D ]  }|||<   Œ	 Œ$|j                  d«      sŒ6|D ]  }|||<   Œ	 ŒC |€J ‚|€J ‚| \  }	}
dx}}|	j                  d«      r|	}d}n|j                  |	«      }|	}|
j                  d«      r|
}d}n|j                  |
«      }|
}||fD ��cg c]  }||fD ]
  }|�|�||f‘Œ Œ }}}|D ]  } | |v sŒ||    c S  |S c c}}w )a¡	  Retrieve the kerning value (if any) between a pair of elements.

    The elments can be either individual glyphs (by name) or kerning
    groups (by name), or any combination of the two.

    Args:
      pair:
          A tuple, in logical order (first, second) with respect
          to the reading direction, to query the font for kerning
          information on. Each element in the tuple can be either
          a glyph name or a kerning group name.
      kerning:
          A dictionary of kerning pairs.
      groups:
          A set of kerning groups.
      fallback:
          The fallback value to return if no kern is found between
          the elements in ``pair``. Defaults to 0.
      glyphToFirstGroup:
          A dictionary mapping glyph names to the first-glyph kerning
          groups to which they belong. Defaults to ``None``.
      glyphToSecondGroup:
          A dictionary mapping glyph names to the second-glyph kerning
          groups to which they belong. Defaults to ``None``.

    Returns:
      The kerning value between the element pair. If no kerning for
      the pair is found, the fallback value is returned.

    Note: This function expects the ``kerning`` argument to be a flat
    dictionary of kerning pairs, not the nested structure used in a
    kerning.plist file.

    Examples::

      >>> groups = {
      ...     "public.kern1.O" : ["O", "D", "Q"],
      ...     "public.kern2.E" : ["E", "F"]
      ... }
      >>> kerning = {
      ...     ("public.kern1.O", "public.kern2.E") : -100,
      ...     ("public.kern1.O", "F") : -200,
      ...     ("D", "F") : -300
      ... }
      >>> lookupKerningValue(("D", "F"), kerning, groups)
      -300
      >>> lookupKerningValue(("O", "F"), kerning, groups)
      -200
      >>> lookupKerningValue(("O", "E"), kerning, groups)
      -100
      >>> lookupKerningValue(("O", "O"), kerning, groups)
      0
      >>> lookupKerningValue(("E", "E"), kerning, groups)
      0
      >>> lookupKerningValue(("E", "O"), kerning, groups)
      0
      >>> lookupKerningValue(("X", "X"), kerning, groups)
      0
      >>> lookupKerningValue(("public.kern1.O", "public.kern2.E"),
      ...     kerning, groups)
      -100
      >>> lookupKerningValue(("public.kern1.O", "F"), kerning, groups)
      -200
      >>> lookupKerningValue(("O", "public.kern2.E"), kerning, groups)
      -100
      >>> lookupKerningValue(("public.kern1.X", "public.kern2.X"), kerning, groups)
      0
    NzKMust provide both 'glyphToFirstGroup' and 'glyphToSecondGroup', or neither.zpublic.kern1.zpublic.kern2.)Ú
ValueErrorÚitemsÚ
startswithÚget)ÚpairÚkerningÚgroupsÚfallbackÚglyphToFirstGroupÚglyphToSecondGroupÚgroupÚgroupMembersÚglyphÚfirstÚsecondÚ
firstGroupÚsecondGroupÚ
firstGlyphÚsecondGlyphÚaÚbÚpairss                     úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/ufoLib/kerning.pyÚlookupKerningValuer!   
   s·  € ðZ ˆw�Ø�t‰}Ðà˜TÐ!Ð'9¸TÐ'AÒBÜØYó
ð 	
ð Ð ØÐØÐØ#)§<¡<£>ò 	6ÑˆE�<Ø×Ñ Ô0Ø)ò 5�EØ/4Ð% eÒ,ñ5à×!Ñ! /Õ2Ø)ò 6�EØ05Ð& uÒ-ñ6ð	6ð Ð(Ð(Ð(ØÐ)Ð)Ð)à�M€Eˆ6Ø#Ð#€J�Ø×Ñ˜Ô(Øˆ
Ø‰
à&×*Ñ*¨5Ó1ˆ
Øˆ
Ø×Ñ˜Ô)ØˆØ‰à(×,Ñ,¨VÓ4ˆØˆð ˜jÐ)÷àØ˜{Ð+òð Øˆ=˜Q˜]ð 
ˆAŠðØð€Eñ ð ò !ˆØ�7Š?Ø˜4‘=Ò ð!ð €Oùós   Ã"DÚ__main__)r   NN)r   r   r   r   r   r   r   r   r   úOptional[StrDict]r   r#   Úreturnr   )Ú
__future__r   Útypingr   ÚfontTools.annotationsr   r   r   r   ÚdictÚstrÚStrDictr!   Ú__name__ÚdoctestÚtestmod© ó    r    ú<module>r0      s—   ðÝ "å ç SÓ Sà
ˆs�Cˆx‰.€ð Ø+/Ø,0ð}Ø
ð}àð}ð ð}ð ð	}ð
 )ð}ð *ð}ð ó}ð@ ˆzÒÛà€G‡O�OÕð r/   