aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py')
-rw-r--r--.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py b/.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py
new file mode 100644
index 00000000..06e343fc
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/openpyxl/styles/fonts.py
@@ -0,0 +1,113 @@
+# Copyright (c) 2010-2024 openpyxl
+
+
+from openpyxl.descriptors import (
+ Alias,
+ Sequence,
+ Integer
+)
+from openpyxl.descriptors.serialisable import Serialisable
+
+from openpyxl.descriptors.nested import (
+ NestedValue,
+ NestedBool,
+ NestedNoneSet,
+ NestedMinMax,
+ NestedString,
+ NestedInteger,
+ NestedFloat,
+)
+from .colors import ColorDescriptor, Color, BLACK
+
+from openpyxl.compat import safe_string
+from openpyxl.xml.functions import Element, SubElement
+from openpyxl.xml.constants import SHEET_MAIN_NS
+
+
+def _no_value(tagname, value, namespace=None):
+ if value:
+ return Element(tagname, val=safe_string(value))
+
+
+class Font(Serialisable):
+ """Font options used in styles."""
+
+ UNDERLINE_DOUBLE = 'double'
+ UNDERLINE_DOUBLE_ACCOUNTING = 'doubleAccounting'
+ UNDERLINE_SINGLE = 'single'
+ UNDERLINE_SINGLE_ACCOUNTING = 'singleAccounting'
+
+ name = NestedString(allow_none=True)
+ charset = NestedInteger(allow_none=True)
+ family = NestedMinMax(min=0, max=14, allow_none=True)
+ sz = NestedFloat(allow_none=True)
+ size = Alias("sz")
+ b = NestedBool(to_tree=_no_value)
+ bold = Alias("b")
+ i = NestedBool(to_tree=_no_value)
+ italic = Alias("i")
+ strike = NestedBool(allow_none=True)
+ strikethrough = Alias("strike")
+ outline = NestedBool(allow_none=True)
+ shadow = NestedBool(allow_none=True)
+ condense = NestedBool(allow_none=True)
+ extend = NestedBool(allow_none=True)
+ u = NestedNoneSet(values=('single', 'double', 'singleAccounting',
+ 'doubleAccounting'))
+ underline = Alias("u")
+ vertAlign = NestedNoneSet(values=('superscript', 'subscript', 'baseline'))
+ color = ColorDescriptor(allow_none=True)
+ scheme = NestedNoneSet(values=("major", "minor"))
+
+ tagname = "font"
+
+ __elements__ = ('name', 'charset', 'family', 'b', 'i', 'strike', 'outline',
+ 'shadow', 'condense', 'color', 'extend', 'sz', 'u', 'vertAlign',
+ 'scheme')
+
+
+ def __init__(self, name=None, sz=None, b=None, i=None, charset=None,
+ u=None, strike=None, color=None, scheme=None, family=None, size=None,
+ bold=None, italic=None, strikethrough=None, underline=None,
+ vertAlign=None, outline=None, shadow=None, condense=None,
+ extend=None):
+ self.name = name
+ self.family = family
+ if size is not None:
+ sz = size
+ self.sz = sz
+ if bold is not None:
+ b = bold
+ self.b = b
+ if italic is not None:
+ i = italic
+ self.i = i
+ if underline is not None:
+ u = underline
+ self.u = u
+ if strikethrough is not None:
+ strike = strikethrough
+ self.strike = strike
+ self.color = color
+ self.vertAlign = vertAlign
+ self.charset = charset
+ self.outline = outline
+ self.shadow = shadow
+ self.condense = condense
+ self.extend = extend
+ self.scheme = scheme
+
+
+ @classmethod
+ def from_tree(cls, node):
+ """
+ Set default value for underline if child element is present
+ """
+ underline = node.find("{%s}u" % SHEET_MAIN_NS)
+ if underline is not None and underline.get('val') is None:
+ underline.set("val", "single")
+ return super().from_tree(node)
+
+
+DEFAULT_FONT = Font(name="Calibri", sz=11, family=2, b=False, i=False,
+ color=Color(theme=1), scheme="minor")