diff --git a/src/epub_converter/css_preprocessing.py b/src/epub_converter/css_preprocessing.py index 29021ec..2e65880 100644 --- a/src/epub_converter/css_preprocessing.py +++ b/src/epub_converter/css_preprocessing.py @@ -21,7 +21,7 @@ def get_bg_color(x): return color -def convert_tag_style_values(size_value: str) -> str: +def convert_tag_style_values(size_value: str, is_indent: bool = False) -> str: """ Function - converts values of tags from em/%/pt to px @@ -33,27 +33,23 @@ def convert_tag_style_values(size_value: str) -> str: Returns ------- size_value: str - + converted value size """ - def find_closest_size(style_value): - possible_sizes = list( - takewhile(lambda x: style_value >= x, LiveCartaConfig.sizes_pr)) - last_possible_size_index = LiveCartaConfig.sizes_pr.index( - possible_sizes[-1]) - return LiveCartaConfig.sizes_px[last_possible_size_index] - - font_size_regexp = re.compile( + size_regexp = re.compile( r"(^-*(\d*\.*\d+)%$)|(^-*(\d*\.*\d+)em$)|(^-*(\d*\.*\d+)pt$)") - has_style_attrs = re.search(font_size_regexp, size_value) + has_style_attrs = re.search(size_regexp, size_value) if has_style_attrs: if has_style_attrs.group(1): - size_value = float(size_value.replace("%", ""))*6 + multiplier = 5.76 if is_indent else 0.16 + size_value = float(size_value.replace("%", "")) * multiplier return str(size_value)+'px' elif has_style_attrs.group(3): - size_value = float(size_value.replace("em", "")) - return find_closest_size(size_value) + multiplier = 18 if is_indent else 16 + size_value = float(size_value.replace("em", "")) * multiplier + return str(size_value)+'px' elif has_style_attrs.group(5): - return size_value.replace("pt", "px") + size_value = float(size_value.replace("pt", "")) * 4/3 + return str(size_value)+'px' else: return "" return size_value @@ -73,10 +69,10 @@ def convert_indents_tag_values(size_value: str) -> str: """ if len(size_value.split(" ")) == 3: size_value = convert_tag_style_values(size_value.split( - " ")[-2]) # returns middle value + " ")[-2], True) # returns middle value else: size_value = convert_tag_style_values(size_value.split( - " ")[-1]) # returns last value + " ")[-1], True) # returns last value return size_value @@ -146,7 +142,7 @@ LIVECARTA_STYLE_ATTRS_MAPPING = { "list-style-image": lambda x: "disc", "margin-left": convert_indents_tag_values, "margin-top": convert_tag_style_values, - "margin": convert_indents_tag_values + "margin": convert_indents_tag_values, } diff --git a/src/livecarta_config.py b/src/livecarta_config.py index 0f6b0a1..9fc8e2e 100644 --- a/src/livecarta_config.py +++ b/src/livecarta_config.py @@ -76,16 +76,6 @@ class LiveCartaConfig: INDENT = "30px" - sizes_pr = [-100, -1, 0.5, 0.56, 0.63, 0.69, 0.75, 0.81, 0.88, 0.94, 1.0, - 1.06, 1.13, 1.19, 1.25, 1.31, 1.38, 1.44, 1.5, 1.56, 1.63, 1.69, - 1.75, 1.81, 1.88, 1.94, 2.0, 2.06, 2.13, 2.19, 2.25, 2.31, 2.38, - 2.44, 2.5, 2.56, 2.63, 2.69, 2.75, 2.81, 2.88, 2.94, 3.0, 4.0, 5.0] - - sizes_px = ["0px", "10px", "10px", "11px", "12px", "13px", "14px", "15px", "16px", "17px", "18px", - "19px", "20px", "21px", "22px", "23px", "24px", "25px", "26px", "27px", "28px", "29px", - "30px", "31px", "32px", "33px", "34px", "35px", "36px", "37px", "38px", "39px", "40px", - "41px", "42px", "43px", "44px", "45px", "46px", "47px", "48px", "49px", "50px", "64px", "72px"] - list_types = ["circle", "disc", "armenian", "decimal", "decimal-leading-zero", "georgian", "lower-alpha", "lower-latin", "lower-roman", "upper-alpha", "upper-latin", "upper-roman", "none"]