o
    yqi                  	   @   s6  d dl mZ d dl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	ed
ededefddZ	d#d	ed
ededejfddZG dd dZeee
 r]ede
 d eddZeddZeddZeddZeddZeddZeddZeddZeddZed dZed!dZed"dZdS )$    )PathN)	ImageFont   )logging)	CACHE_DIR)download)LOCAL_FONT_FILE_PATHtxtsz	font_pathreturnc                 C   s   t |d d }tj||dd}t tjdd dk r$|| d }n|| }||d krAt ||d  | }tj||dd}|S )a  
    Create a font object with specified size and path, adjusted to fit within the given image region.

    Parameters:
    txt (str): The text to be rendered with the font.
    sz (tuple): A tuple containing the height and width of an image region, used for font size.
    font_path (str): The path to the font file.

    Returns:
    ImageFont: An ImageFont object adjusted to fit within the given image region.
    r   皙?utf-8encoding.r   
   )intr   truetypePIL__version__splitgetsize	getlength)r	   r
   r   Z	font_sizefontlength r   Z/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/paddlex/utils/fonts.pycreate_font   s   
r   333333?c                    s   t | dkr
t | nd}t|d | d | }t|d}tj||dd ttjdd dk r=t fdd	| D }nt fd
d	| D }||d kret||d  | }t|d}tj||dd  S )Nr   r   r   r   r   r   r   c                    s   g | ]	}  |d  qS )r   )r   .0cr   r   r   
<listcomp>=   s    z(create_font_vertical.<locals>.<listcomp>c                    s   g | ]}  |qS r   )r   r    r#   r   r   r$   ?   s    )lenr   maxr   r   r   r   r   )r	   r
   r   scalenZbase_font_sizeZmax_char_widthnew_sizer   r#   r   create_font_vertical4   s   

r*   c                   @   s*   e Zd ZdddZedd Zdd ZdS )	FontNc                 C   sD   |d u rt tt rtt}|| _|s |d usJ || _d S d S N)r   strr   is_file_local_path
_font_name)self	font_nameZ
local_pathr   r   r   __init__J   s   
zFont.__init__c                 C   s   | j s|   | j S r,   )r/   _get_offical_font)r1   r   r   r   pathS   s   z	Font.pathc                 C   sD   t td | j   }t | std| j |d || _dS )z2
        Download the official font file.
        ZfontszDhttps://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/)urlZ	save_pathN)r   r   r0   resolveas_posixr.   r   r/   )r1   r   r   r   r   r4   Z   s   

zFont._get_offical_font)NN)__name__
__module____qualname__r3   propertyr5   r4   r   r   r   r   r+   I   s
    
	
r+   zUsing the local font file(`z'`) specified by `LOCAL_FONT_FILE_PATH`!zPingFang-SC-Regular.ttf)r2   zsimfang.ttfz	latin.ttfzth.ttfzel.ttfz
korean.ttfz
arabic.ttfzcyrillic.ttfzkannada.ttfz
telugu.ttfz	tamil.ttfzdevanagari.ttf)r   )pathlibr   r   r    r   cacher   r   flagsr   r-   tupler   ZFreeTypeFontr*   r+   r.   warningZPINGFANG_FONTZSIMFANG_FONTZ
LATIN_FONTZTH_FONTZEL_FONTZKOREAN_FONTZARABIC_FONTZCYRILLIC_FONTZKANNADA_FONTZTELUGU_FONTZ
TAMIL_FONTZDEVANAGARI_FONTr   r   r   r   <module>   sF   












