
    Og	                    f    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	 erd dl
mZ  G d d	e	      Zy
)    )annotations)TYPE_CHECKING)fonts)FontMeasurements   )TextRenderer)NumpyPath2dc                      e Zd ZdZd
dZddZddZ	 d	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZ		 d	 	 	 	 	 	 	 ddZ
y	)UnifiedTextRendererzThis text renderer supports .ttf, .ttc, .otf, .shx, .shp and .lff fonts.

    The resolving order for .shx fonts is applied in the RenderContext.add_text_style()
    method.

    c                "    t               | _        y N)dict_font_cache)selfs    o/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/drawing/unified_text_renderer.py__init__zUnifiedTextRenderer.__init__   s    :>&    c                   |j                   sJ|j                  r>t        j                  |j                  |j                  rdnd|j
                        }||}|j                   j                         }	 | j                  |   S # t        $ r Y nw xY wt        j                  |j                   d      }|| j                  |<   |S )Ni  i  )familyweightitalic      ?)
filenamer   r   find_best_matchis_bold	is_italiclowerr   KeyError	make_font)r   	font_facefoundkeyabstract_fonts        r   get_fontzUnifiedTextRenderer.get_font   s    !!i&6&6)) '''//sS **E
  !	  &&(	##C(( 			(:(:C@ -s   2B 	BBc                r    | j                  |      }|j                  t        j                  j                  k(  S r   )r$   font_render_typer   FontRenderTypeSTROKE)r   r    r#   s      r   is_stroke_fontz"UnifiedTextRenderer.is_stroke_font+   s-    i0--1E1E1L1LLLr   c                Z    | j                  |      }|j                  j                  |      S r   )r$   measurementsscale)r   r    
cap_heightr#   s       r   get_font_measurementsz)UnifiedTextRenderer.get_font_measurements/   s)     i0))//
;;r   c                H    | j                  |      }|j                  ||      S r   )r$   text_path_exr   textr    r-   r#   s        r   get_text_pathz!UnifiedTextRenderer.get_text_path5   s%     i0))$
;;r   c                H    | j                  |      }|j                  ||      S r   )r$   text_glyph_pathsr1   s        r   get_text_glyph_pathsz(UnifiedTextRenderer.get_text_glyph_paths;   s%     i0--dJ??r   c                H    | j                  |      }|j                  ||      S r   )r$   text_width_exr1   s        r   get_text_line_widthz'UnifiedTextRenderer.get_text_line_widthA   s%     i0**4<<r   N)returnNone)r    fonts.FontFacer:   zfonts.AbstractFont)r    r<   r:   bool)r   )r    r<   r-   floatr:   r   )r2   strr    r<   r-   r>   r:   r	   )r2   r?   r    r<   r-   r>   r:   zlist[NumpyPath2d])r2   r?   r    r<   r-   r>   r:   r>   )__name__
__module____qualname____doc__r   r$   r)   r.   r3   r6   r9    r   r   r   r      s    A$M
 >A<'<5:<	< IL<<$2<@E<	< IL@@$2@@E@	@  	== "= 	=
 
=r   r   N)
__future__r   typingr   ezdxf.fontsr   ezdxf.fonts.font_measurementsr   text_rendererr   ezdxf.npshapesr	   r   rD   r   r   <module>rK      s(    #    : '*:=, :=r   