B
    Sc.
  ã               @   s&   ddd„Z edkr"d dlZe ¡  dS )é    Nc             C   s.  | |kr||  S |dk	r$|dk	s$t ‚|dk	r8|dk	s8t ‚|dkr i }i }xV| ¡ D ]J\}}| d¡r|x6|D ]}|||< qjW qR| d¡rRx|D ]}|||< qŒW qRW | \}	}
d }}|	 d¡rÄ|	}d}	n
| |	¡}|
 d¡râ|
}d}
n
| |
¡}|	|
f|	|f||
f||fg}x |D ]} | |kr||  S qW |S )aI  
	Note: This expects kerning to be a flat dictionary
	of kerning pairs, not the nested structure used
	in kerning.plist.

	>>> 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
	Nzpublic.kern1.zpublic.kern2.)ÚAssertionErrorÚitemsÚ
startswithÚget)ZpairZkerningÚgroupsZfallbackZglyphToFirstGroupZglyphToSecondGroupÚgroupZgroupMembersZglyphÚfirstÚsecondZ
firstGroupZsecondGroupZpairs© r
   ú7lib/python3.7/site-packages/fontTools/ufoLib/kerning.pyÚlookupKerningValue   sD    (










r   Ú__main__)r   NN)r   Ú__name__ZdoctestZtestmodr
   r
   r
   r   Ú<module>   s   
T