� ��ge ��~�dZddlZddlZddlZeje��Zgd�Zd�Zd�Z e fd�Z e fd�Z de d e d e fd �ZdS) z# Various round-to-integer helpers. �N)�noRound�otRound� maybeRound� roundFunc�nearestMultipleShortestReprc��|S�N���values �i/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fontTools/misc/roundTools.pyrrs�� �L�c�J�ttj|dz����S)aRound float value to nearest integer towards ``+Infinity``. The OpenType spec (in the section on `"normalization" of OpenType Font Variations <https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#coordinate-scales-and-normalization>`_) defines the required method for converting floating point values to fixed-point. In particular it specifies the following rounding strategy: for fractional values of 0.5 and higher, take the next higher integer; for other fractional values, truncate. This function rounds the floating-point value according to this strategy in preparation for conversion to fixed-point. Args: value (float): The input floating-point value. Returns float: The rounded value. ��?)�int�math�floorr s r rrs ��* �t�z�%�#�+�&�&� '� '�'rc�L�||��}t||z ��|kr|n|Sr )�abs)�v� tolerance�round�roundeds r rr0s/���e�A�h�h�G��'�A�+�&�&�)�3�3�7�7��:rc��|dkrtd���|dkrtS|dkr|Stjt||���S)Nrz#Rounding tolerance must be positiver�rr)� ValueErrorr� functools�partialrrs r rr5sP���1�}�}��>�?�?�?��A�~�~����C���� � � �Z�9�E� J� J� J�Jrr �factor�returnc��|sdSt||z ��|z}d|z}||z }||z}t|��t|��kr)ttt |������Sd}||z}||z}t |��t |��kr||ksJ�t t |����D]}||||krn�|�d��}||ksJ�d||z z}||zS)a"Round to nearest multiple of factor and return shortest decimal representation. This chooses the float that is closer to a multiple of the given factor while having the shortest decimal representation (the least number of fractional decimal digits). For example, given the following: >>> nearestMultipleShortestRepr(-0.61883544921875, 1.0/(1<<14)) '-0.61884' Useful when you need to serialize or print a fixed-point number (or multiples thereof, such as F2Dot14 fractions of 180 degrees in COLRv1 PaintRotate) in a human-readable form. Args: value (value): The value to be rounded and serialized. factor (float): The value which the result is a close multiple of. Returns: str: A compact string representation of the value. z0.0rz%.8f�.z%%.%df)rr�str�floatr�len�range�find)r r�eps�lo�hi�fmt�i�periods r rrBs��. ���u� �E�F�N� #� #�f� ,�E� ��,�C� ���B� ���B� �2�w�w�#�b�'�'����5��u���&�&�'�'�'� �C� �r��B� �r��B� �r�7�7�c�"�g�g� � �"��(�(�(� *� �3�r�7�7�^�^���� �a�5�B�q�E�>�>� �E� � �W�W�S�\�\�F� �A�:�:�:�:� �a�&�j� !�C� ��;�r)�__doc__rr�logging� getLogger�__name__�log�__all__rrrrr$r#rr rr �<module>r4s����� � � � ����������g���!�!�� � � �����(�(�(�0$+�;�;�;�;� '� K� K� K� K�,�u�,�e�,��,�,�,�,�,�,r
Memory