Support configurable default font and size
Some checks failed
CI Pipeline / build (pull_request) Failing after 46s
Some checks failed
CI Pipeline / build (pull_request) Failing after 46s
Add default_font and default_size options to Document.create, rendered as w:docDefaults in styles.xml. Defaults to Arial 12pt. Adjust heading sizes for better visual hierarchy. Styling based on uutilsynet guidance for accessible documents: https://www.uutilsynet.no/veiledning/rettleiar-universelt-utforma-word-og-pdf-dokument/1636
This commit is contained in:
@@ -18,9 +18,11 @@ module Notare
|
||||
right: "right"
|
||||
}.freeze
|
||||
|
||||
def initialize(styles, table_styles = {})
|
||||
def initialize(styles, table_styles = {}, default_font: nil, default_size: nil)
|
||||
@styles = styles
|
||||
@table_styles = table_styles
|
||||
@default_font = default_font
|
||||
@default_size = default_size
|
||||
end
|
||||
|
||||
def to_xml
|
||||
@@ -28,6 +30,8 @@ module Notare
|
||||
xml.styles("xmlns:w" => NAMESPACE) do
|
||||
xml.parent.namespace = xml.parent.namespace_definitions.find { |ns| ns.prefix == "w" }
|
||||
|
||||
render_doc_defaults(xml) if @default_font || @default_size
|
||||
|
||||
@styles.each_value do |style|
|
||||
render_style(xml, style)
|
||||
end
|
||||
@@ -44,6 +48,28 @@ module Notare
|
||||
|
||||
private
|
||||
|
||||
def render_doc_defaults(xml)
|
||||
xml["w"].docDefaults do
|
||||
xml["w"].rPrDefault do
|
||||
xml["w"].rPr do
|
||||
if @default_font
|
||||
xml["w"].rFonts(
|
||||
"w:ascii" => @default_font,
|
||||
"w:hAnsi" => @default_font,
|
||||
"w:eastAsia" => @default_font,
|
||||
"w:cs" => @default_font
|
||||
)
|
||||
end
|
||||
if @default_size
|
||||
half_points = (@default_size * 2).to_i
|
||||
xml["w"].sz("w:val" => half_points.to_s)
|
||||
xml["w"].szCs("w:val" => half_points.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_style(xml, style)
|
||||
style_type = style.paragraph_properties? ? "paragraph" : "character"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user