Compare commits

...

35 commits

Author SHA1 Message Date
ca46b20e41
chore: push new version 2021-12-02 12:31:16 +01:00
e62d44cd89
chore: new version 2021-12-02 12:21:29 +01:00
a5ac4cbb43
feat: replace default paragraph styles with the same tool 2021-11-30 19:09:21 +01:00
6d138ae938 chore: push new version 2021-10-19 23:44:46 +02:00
d06657e3ee feat: provide more info if headings linking with TOC gone wrong #2 2021-10-19 23:43:25 +02:00
7a389b1b17 chore: push new version 2021-10-19 23:11:25 +02:00
fa35152083 New version 2021-10-19 23:05:30 +02:00
05041fc38b feat: provide more info if headings linking with TOC gone wrong 2021-10-19 23:02:41 +02:00
82dc861e82 Push new version 2021-10-06 12:25:02 +02:00
6843f73923 fix: convert mm to long 2021-10-06 12:23:31 +02:00
1f4f9d757d push new version 2021-10-01 11:05:57 +02:00
075bfc85aa fix: don't split pages while breaking paragraph 2021-10-01 11:00:28 +02:00
b0b5460032 chore: push new version 2021-09-23 14:33:28 +02:00
797ff48837 fix: Fixed archive conversion. Fixed new para balance function 2021-09-20 15:53:51 +02:00
fe1fc573eb fix: refactoring and fixes for working with archive 2021-08-29 16:44:00 +02:00
82c63c82ca fix: multiple fixes for processing archive books 2021-08-27 22:31:59 +02:00
941ac1c9cc fix: improved speed of shrink page content by changing order of shrink methods 2021-08-27 15:27:12 +02:00
5dcf629d0d fix: fixed wrong character numbers for lowercased cyrillic and latin characters 2021-08-27 15:26:04 +02:00
1eaa629949 chore: updated version 2021-08-27 13:03:13 +02:00
be702bc60f feat: added icon for para tail balance 2021-08-27 13:02:48 +02:00
f39f25b053 fix: exit if excerption happened while compiling journal 2021-08-27 12:13:36 +02:00
5bb9600439 fix rewritten shrink content function 2021-08-26 16:38:55 +02:00
f58b4f58de chore: cleaning a bit 2021-08-26 16:38:21 +02:00
48ebe71c8e fix: fixed kern increment/decrement while balancing para tail 2021-08-24 15:01:11 +02:00
ab552a70db fix: improved paragraph balance macro 2021-08-24 10:45:47 +02:00
8785038720 fix: Fixed shrink page content bug 2021-08-24 10:44:39 +02:00
8611814942 fix: added script to fix footnote sign positions 2021-08-24 10:43:44 +02:00
2b37cfe542 fix: fixed text char height shrinking. Use initial value of characters instead of getting it from paragraph style 2021-08-23 18:53:47 +02:00
d05aed70d6 fix: fixed footnote sign position while converting from links 2021-08-23 18:52:23 +02:00
79f8164650 feat: para balance improvements 2021-08-23 18:01:38 +02:00
c5dfb15133 feat: improved icons 2021-08-02 13:40:16 +02:00
13ba8d4f0c Push new version 2021-07-20 14:34:03 +02:00
c44890068b New version 2021-07-20 14:31:31 +02:00
c5da7ca352 Fix (endnotes) removed useless document text selection 2021-07-20 14:31:12 +02:00
8411b36a8f push new version 2021-07-12 18:17:54 +02:00
35 changed files with 2376 additions and 495 deletions

View file

@ -3,6 +3,10 @@
<node oor:name="AddonUI">
<node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.panel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="buttonShrinkText" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
@ -79,11 +83,35 @@
<value>_self</value>
</prop>
</node>
<node oor:name="balanceTail" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Балансировка хвоста</value>
<value xml:lang="fr">Équilibrer la dernière ligne</value>
<value xml:lang="en">Balance the last line </value>
<value xml:lang="sr">Уравнотежите последњу линију</value>
<value xml:lang="hr">Uravnotežite posljednji redak</value>
<value xml:lang="bs">Uravnotežite posljednji redak</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
</node>
</node>
<node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.makeuppanel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="percentPlus" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
@ -171,7 +199,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/paragraph.png</value>
<value>%origin%/icons/paragraph.svg</value>
</prop>
</node>
</node>
@ -181,7 +209,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/links.png</value>
<value>%origin%/icons/links.svg</value>
</prop>
</node>
</node>
@ -191,7 +219,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/press_text.png</value>
<value>%origin%/icons/press_text.svg</value>
</prop>
</node>
</node>
@ -202,7 +230,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/incChar.png</value>
<value>%origin%/icons/incChar.svg</value>
</prop>
</node>
</node>
@ -212,7 +240,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/decChar.png</value>
<value>%origin%/icons/decChar.svg</value>
</prop>
</node>
</node>
@ -222,7 +250,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/incKern.png</value>
<value>%origin%/icons/incKern.svg</value>
</prop>
</node>
</node>
@ -232,7 +260,7 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/decKern.png</value>
<value>%origin%/icons/decKern.svg</value>
</prop>
</node>
</node>
@ -242,10 +270,21 @@
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/endnotes.png</value>
<value>%origin%/icons/endnotes.svg</value>
</prop>
</node>
</node>
<node oor:name="balance-tail" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/tail.svg</value>
</prop>
</node>
</node>

View file

@ -3,7 +3,7 @@
xmlns:dep="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing" />
<version value="0.7.5" />
<version value="0.7.16" />
<platform value="all" />
<display-name>
<name lang="ru">Инструменты для создания электронных изданий</name>
@ -33,8 +33,8 @@
</extension-description>
<icon>
<default xlink:href="icons/addon_icon.png" />
<high-contrast xlink:href="icons/addon_icon.png" />
<default xlink:href="icons/addon_icon.svg" />
<high-contrast xlink:href="icons/addon_icon.svg" />
</icon>
</description>

View file

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Archive" script:language="StarBasic" script:moduleType="normal">Sub archMark20
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Archive" script:language="StarBasic" script:moduleType="normal">Sub archMark29
End Sub
Public Const MAX_CHAR_KERNING = 15
Public Const MIN_CHAR_KERNING = -10
Public Const MIN_SPACING_TO_SHRINK = 500
Sub resetNotesStyle
Dim oDescriptor As Object
Dim dispatcher As Object
@ -168,13 +172,16 @@ sub convertIndesignPageBreaks
Exit Sub
EndIf
turnOffTracking()
setZoomToSpeedUpTasks()
balanceFootNotes()
Dim oViewCursor As Object
oViewCursor = thisComponent.getCurrentController.getViewCursor
oViewCursor.jumpToFirstPage
Dim oSearch As Object
Dim oTextCursor As Object
Dim testCurs As Object
Dim firstLowercase As Boolean
Dim firstBreak As Boolean
firstBreak = true
@ -186,6 +193,7 @@ sub convertIndesignPageBreaks
Dim nextPara As Object
Dim prevPara As Object
Dim nextParaFirstCharacter As String
Dim stringContents As String
firstLowercase = false
oSearch = ThisComponent.createSearchDescriptor()
@ -198,7 +206,15 @@ sub convertIndesignPageBreaks
oTextCursor.gotoRange(oFound,false)
oTextCursor.gotoStartOfParagraph(false)
oTextCursor.gotoEndOfParagraph(true)
oTextCursor.goRight(1,true)
testCurs = oTextCursor.Text.createTextCursorByRange(oTextCursor.End)
testCurs.goRight(1,false)
testCurs.gotoEndOfParagraph(true)
&apos;In case two page breaks go together
stringContents = testCurs.String
If stringContents &lt;&gt; pageBreakMarker Then
oTextCursor.goRight(1,true)
EndIf
oTextCursor.String = &quot;&quot;
oTextCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
&apos;Go to Start of new paragraph to shrink prev page if necessary
@ -216,6 +232,7 @@ sub convertIndesignPageBreaks
Wait 100
pageNumber = getPageNumber(oTextCursor.Text.createTextCursorByRange(oTextCursor.End))
EndIf
&apos;check first character
oTextCursor.goRight(1,true)
nextPara = oTextCursor.End
@ -246,9 +263,10 @@ sub convertIndesignPageBreaks
EndIf
End If
If pageNumber - prevPageNumber &lt; 2 Then
&apos; stretchPrevPage(prevPara)
EndIf
&apos;If pageNumber - prevPageNumber &lt; 2 Then
&apos;stretchPrevPage(prevPara)
&apos;EndIf
prevPageNumber = pageNumber
oFound = ThisComponent.findNext(oFound.End, oSearch)
@ -259,14 +277,16 @@ end Sub
Sub configureHeadings
configureArchiveHeading1
configureOtherArchiveHeadings
configureArchiveHeadings()
End Sub
Sub configureArchiveHeading1
Dim outline1() As Object
Dim oViewCursor As Object
Dim oSavePosition As Object
Dim initPosition As Object
Dim initPageNum As Integer
fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
outline1 = getHeadingWithLevel(1)
@ -274,33 +294,35 @@ Sub configureArchiveHeading1
Dim pageNumberCursor As Object
Dim i As Integer
Dim j As Integer
Dim initialPageCount As Integer
initialPageCount = ThisComponent.currentController.pageCount
For i = LBound(outline1) To UBound(outline1)
oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage()
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false)
startViewPageNum = getPageNumber(pageNumberCursor)
initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
initPageNum = oViewcursor.getPage()
Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100
Do While Not isContentPageChanged(initPosition, initPageNum) AND outline1(i).ParaBottomMargin &lt; 10000
outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin + 100
Loop
Do While isContentPageChanged(initPosition, initPageNum)
If outline1(i).ParaBottomMargin &lt; 0 Then
Exit Do
EndIf
outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin - 100
Loop
If outline1(i).ParaTopMargin &gt;= 100 Then
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100
EndIf
Next i
oViewCursor.goToRange(oSavePosition,false)
End Sub
Sub configureOtherArchiveHeadings
Sub configureArchiveHeadings()
Dim outline1() As Object
Dim oViewCursor As Object
Dim oSavePosition As Object
Dim initPosition As Object
Dim initPageNum As Integer
Dim savePosition As Object
fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
savePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Dim startViewPageNum As Integer
Dim pageNumberCursor As Object
Dim i As Integer
Dim j As Integer
@ -312,23 +334,25 @@ Sub configureOtherArchiveHeadings
If outline1(i).BreakType &lt;&gt; 4 Then
oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage()
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false)
startViewPageNum = getPageNumber(pageNumberCursor)
initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
initPageNum = oViewcursor.getPage()
Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount
Do While Not isContentPageChanged(initPosition, initPageNum)
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100
If (outline1(i).ParaTopMargin &gt; outline1(i).ParaBottomMargin) Then
Exit Do
EndIf
Loop
If outline1(i).ParaTopMargin &gt;= 100 Then
Do While isContentPageChanged(initPosition, initPageNum)
If outline1(i).ParaBottomMargin &lt; 0 Then
Exit Do
EndIf
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100
EndIf
Loop
EndIf
Next i
Next j
oViewCursor.goToRange(oSavePosition,false)
oViewCursor.goToRange(savePosition,false)
End Sub
@ -351,7 +375,7 @@ Sub stretchPrevPage()
Dim curPara As Object
oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.goToRange(prevPara, false)
&apos;oViewCursor.goToStartOfLine(false)
pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
pageNumberCursor.goToStartOfWord(false)
@ -434,18 +458,80 @@ Sub stretchPrevPage()
Next i
Exit Sub
EndIf
oViewCursor.goToRange(oSavePosition,false)
End Sub
Sub balanceCurParaLastLine()
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim paraEnd As Object
Dim success As Boolean
Dim adjustType As Integer
fixViewCursor()
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.ParaIsHyphenation = true
success = balanceParaTail(oViewCursor.Start, false)
End Sub
Sub adjustLastLineCurPara()
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim paraEnd As Object
Dim success As Boolean
Dim adjustType As Integer
Dim hyph As Boolean
fixViewCursor()
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewCursor.Text.CreateTextCursorByRange(oViewCursor)
paraEnd = getParaEnd(oTextCursor)
oTextCursor.goToRange(paraEnd,false)
oTextCursor.goLeft(1,true)
If (oTextCursor.String = &quot; &quot;) Then
oTextCursor.String = &quot;&quot;
EndIf
adjustType = oTextCursor.ParaAdjust
hyph = oTextCursor.ParaIsHyphenation
oTextCursor.ParaIsHyphenation = true
success = balanceParaTail(oTextCursor.Start, true)
If success And adjustType = 2 Then
oTextCursor.ParaLastLineAdjust = 2
Else
oTextCursor.ParaIsHyphenation = hyph
EndIf
End Sub
Sub balanceFootNotes()
Dim allNotes As Object
Dim aNote As Object
Dim x As Long
allNotes = ThisComponent.FootNotes
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
balanceFootNote(aNote)
Next
End Sub
Sub balanceFootNote(textElement As Object)
Dim enum1Element As Object
Dim enum1 As Object
Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
enum1 = textElement.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oViewCursor.goToRange(enum1Element,false)
balanceCurParaLastLine()
EndIf
Wend
End Sub
Sub adjustLastLine(anchor As Object)
anchor.ParaAdjust = 2
&apos;anchor.ParaLastLineAdjust = 2
balancePara(anchor)
Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(anchor,false)
adjustLastLineCurPara()
End Sub
Sub adjustFirstLine(anchor As Object)
@ -460,96 +546,374 @@ Function isLowerCase(character As String) As Boolean
Else
charNum = ASC(character)
End If
If ((charNum &gt; 1071 AND charNum &lt; 1104) Or (charNum &gt; 60 AND charNum &lt; 123)) Then
If ((charNum &gt; 1071 AND charNum &lt; 1120) Or (charNum &gt; 96 AND charNum &lt; 123)) Then
isLowerCase = true
Exit Function
EndIf
isLowerCase = false
End Function
Sub balancePara(targetPara As Object)
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Function balanceParaTail(targetPara As Object, strictMode As Boolean) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oPara As Object
Dim oParaStart As Object
Dim oParaEnd As Object
Dim oContent As Object
Dim oContentStart As Object
Dim oContentEnd As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(targetPara, false)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oContentStart = getParaStart(oTextCursor)
oContentEnd = getParaEnd(oTextCursor)
oContent = getParaSelected(oContentStart,oContentEnd)
balanceParaTail = balanceContentTail(oContent, strictMode)
End Function
Function balanceContentTail(oContent As Object, strictMode As Boolean) As Boolean
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
balanceContentTail = false
Dim oViewCursor As Object
Dim paraLen As Integer
Dim lineCount As Integer
Dim initialLineCount As Integer
Dim lineLen As Integer
Dim mathExpect As Integer
Dim initialLineLen As Integer
Dim minLastLineLength As Integer
paraLen = 0
lineLen = 0
minLastLineLength = 0
initialLineCount = 0
Dim medianLen As Integer
Dim paraLines() As Object
Dim fallBackSuccess As Boolean
fallBackSuccess = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(targetPara, false)
paraLen = Len(oContent.String)
paraLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines, 0)
initialLineLen = lineLen
medianLen = calculateMedianParaLen(oContent)
minLastLineLength = medianLen * 0.93
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oPara = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Go to start of para
oTextCursor.gotoStartOfParagraph(false)
&apos;Get start position
oParaStart = oTextCursor.getStart()
&apos;Go to end of para
oTextCursor.gotoEndOfParagraph(false)
&apos;Get end position
oParaEnd = oTextCursor.getEnd()
&apos;return Text cursor to start
oTextCursor.goToRange(oParaStart,false)
&apos;oPara is full para cursor
oPara.goToRange(oParaStart,false)
oPara.goToRange(oParaEnd,true)
If Not IsEmpty(oContent.CharKerning) Then
initialCharKerning = oContent.CharKerning
Else
initialCharKerning = 0
End If
Do
&apos;Not first iteration
If minLastLineLength &lt;&gt; 0 Then
If oPara.CharKerning &lt; 50 Then
If(IsEmpty(oPara.CharKerning)) Then
oPara.CharKerning = 0
Else
oPara.CharKerning = oPara.CharKerning + 2
End If
Else
&apos;Failed to balance para
Exit Sub
If initialLineCount &lt; 2 Then
Exit Function
EndIf
Do While lastLineIsNotBalanced(lineLen, minLastLineLength)
decreaseCharKerning(oContent)
paraLines = getContentLines(oContent)
lineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines,0)
If (lineCount &lt; initialLineCount ) OR (oContent.CharKerning &lt; MIN_CHAR_KERNING) Then
&apos;Tightened last line but it is still smaller than we need
fallBackSuccess = tryExpandPrevLines(oContent, minLastLineLength)
If Not fallBackSuccess Then
If strictMode Then
oContent.CharKerning = initialCharKerning
balanceContentTail = false
Else
paraLines = getContentLines(oContent)
lineLen = getParaLineLength(paraLines,0)
If (lineLen &lt; initialLineLen) Then
oContent.CharKerning = initialCharKerning
balanceContentTail = false
Else
balanceContentTail = true
EndIf
EndIf
oViewCursor.collapseToEnd()
Exit Function
EndIf
Exit Do
EndIf
oViewCursor.goToRange(oParaStart,false)
oTextCursor.goToRange(oParaStart,false)
lineCount = 0
While NOT oTextCursor.isEndOfParagraph()
oViewCursor.gotoEndOfLine(true)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
lineLen = Len(oTextCursor.getString())
paraLen = paraLen + lineLen
lineCount = lineCount + 1
oViewCursor.collapseToEnd()
Wend
&apos;set initial line count
If initialLineCount = 0 Then
initialLineCount = lineCount
ElseIf lineCount &gt; initialLineCount Then
&apos;Undo last iteration as line overflow happened.
&apos;And exit
If(IsEmpty(oPara.CharKerning)) Then
oPara.CharKerning = 0
Else
oPara.CharKerning = oPara.CharKerning - 2
End If
Exit sub
Loop
oViewCursor.collapseToEnd()
balanceContentTail = true
End Function
Function shrinkContentWithKerning(oContent As Object) As Boolean
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
shrinkContentWithKerning = false
Dim paraLen As Integer
Dim lineCount As Integer
Dim saveLineCount As Integer
Dim initialLineCount As Integer
Dim contentLines() As Object
Dim kerningValue As Integer
contentLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(contentLines)
saveLineCount = initialLineCount
If Not IsEmpty(oContent.CharKerning) Then
initialCharKerning = oContent.CharKerning
Else
initialCharKerning = 0
End If
kerningValue = initialCharKerning
&apos;Reduce kerning is useless if content is less than 2 lines long
If initialLineCount &lt; 2 Then
Exit Function
EndIf
Do While oContent.CharKerning &gt; MIN_CHAR_KERNING
decreaseCharKerning(oContent)
contentLines = getContentLines(oContent)
lineCount = getParaLinesCount(contentLines)
If lineCount &lt; saveLineCount Then
kerningValue = oContent.CharKerning
saveLineCount = lineCount
EndIf
mathExpect = paraLen / lineCount
minLastLineLength = mathExpect * 0.9
Loop Until minLastLineLength &lt; lineLen
Loop
&apos;If decrease kerning didn&apos;t reduce lines then retreat to latest value that changed lines count
If kerningValue &lt;&gt; oContent.CharKerning Then
oContent.CharKerning = kerningValue
EndIf
If initialCharKerning &lt;&gt; kerningValue Then
shrinkContentWithKerning = true
EndIf
End Function
Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Boolean
Dim lineCount As Integer
Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
Dim lastLineCharKerning As Integer
Dim paraLines() As Object
Dim lineCharKerning As Integer
paraLines = getContentLines(oPara)
lineLen = getParaLineLength(paraLines,0)
initialLineCount = getParaLinesCount(paraLines)
lineCount = initialLineCount
lineNum = 0
Do While lineCount = initialLineCount And lastLineIsNotBalanced(lineLen, minLastLineLength)
If (lineNum + 1 &lt; lineCount And Not IsInArray(failedLines, lineNum + 1)) Then
lineNum = lineNum + 1
EndIf
paraLine = paraLines(UBound(paraLines) - lineNum)
increaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines,0)
If lineNum &gt; 1 And (lineCount &lt;&gt; initialLineCount Or paraLine.CharKerning &gt; MAX_CHAR_KERNING) Then
AddToArray(failedLines, lineNum)
lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
If lineCount &gt; initialLineCount Then
Do While lineCount &gt; initialLineCount And lineCharKerning &gt; MIN_CHAR_KERNING
lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
Loop
EndIf
lineLen = getParaLineLength(paraLines,0)
lineNum = 0
ElseIf lineNum = 1 And paraLine.CharKerning &gt; MAX_CHAR_KERNING Then
tryExpandPrevLines = false
Exit Function
EndIf
Loop
If Not lastLineIsNotBalanced(lineLen, minLastLineLength) And lineCount = initialLineCount Then
tryExpandPrevLines = true
Else
tryExpandPrevLines = false
EndIf
normalizeLastLine(oPara)
End Function
Sub normalizeLastLine(oPara As Object)
Dim lineCount As Integer
Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
Dim lastLineCharKerning As Integer
Dim paraLines() As Object
Dim oTextCursor As Object
oTextCursor = oPara.Text.createTextCursorByRange(oPara)
oTextCursor.collapseToEnd()
If ( oTextCursor.CharKerning &gt; 0 ) Then
Exit Sub
EndIf
&apos;increase last line kerning to 0
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
finishLineCount = lineCount
finishLastline = paraLines(UBound(paraLines))
&apos;try just set 0 char kerning to last line, reduce kerning if failed
lastLineCharKerning = 0
finishLastline.CharKerning = lastLineCharKerning
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
If lineCount &gt; finishLineCount Then
Do While lineCount &gt; finishLineCount AND lastLineCharKerning &gt; MIN_CHAR_KERNING
lastLineCharKerning = lastLineCharKerning - 2
finishLastline.CharKerning = lastLineCharKerning
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
Loop
EndIf
End Sub
Function getParaLinesCount(paraLines() As Object) As Integer
getParaLinesCount = UBound(paraLines) + 1
End Function
Function getParaLineLength(paraLines() As Object, lineNumber As Integer) As Integer
Dim arrIndex As Integer
arrIndex = UBound(paraLines) - lineNumber
If (arrIndex &gt;= 0) Then
getParaLineLength = Len(paraLines(arrIndex).String)
Else
&apos;Throw an error?
getParaLineLength = 0
EndIf
End Function
Function getContentLines(oContent As Object) As Variant
Dim oTextCursor As Object
Dim oViewCursor As Object
Dim paraLine As Object
Dim paraLines() As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
&apos;initial value is 1 As paragraph can&apos;t be 0 lines long
oTextCursor = oContent.Text.createTextCursorByRange(oContent)
oTextCursor.collapseToStart()
oViewCursor.goToRange(oTextCursor,false)
While NOT oTextCursor.isEndOfParagraph()
oViewCursor.gotoEndOfLine(true)
If (Len(oViewCursor.String) = 0) Then
oTextCursor.goToRange(oViewCursor,false)
oTextCursor.goRight(1,false)
oViewCursor.goToRange(oTextCursor,false)
oViewCursor.gotoEndOfLine(true)
EndIf
If (Len(oViewCursor.String) &gt; 0) Then
paraLine = oViewCursor.Text.createTextCursorByRange(oViewCursor)
AddToArray(paraLines, paraLine)
EndIf
oViewCursor.collapseToEnd()
oTextCursor.goToRange(oViewCursor,false)
Wend
getContentLines = paraLines
End Function
Function decreaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
initialCharKerning = MIN_CHAR_KERNING + 2
If Not (IsEmpty(oPara.CharKerning)) Then
initialCharKerning = oPara.CharKerning
EndIf
If (initialCharKerning &gt;= MIN_CHAR_KERNING) Then
oPara.CharKerning = initialCharKerning - 2
EndIf
decreaseCharKerning = initialCharKerning - 2
End Function
Function increaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
initialCharKerning = MAX_CHAR_KERNING - 2
If Not (IsEmpty(oPara.CharKerning)) Then
initialCharKerning = oPara.CharKerning
EndIf
oPara.CharKerning = initialCharKerning + 2
increaseCharKerning = initialCharKerning + 2
End Function
Function lastLineIsNotBalanced(lineLen As Integer,minLastLineLength As Integer) As Boolean
lastLineIsNotBalanced = true
If lineLen = 0 Then
lastLineIsNotBalanced = false
Exit Function
EndIf
If lineLen &gt;= minLastLineLength Then
lastLineIsNotBalanced = false
EndIf
End Function
Function getParaStart(oTextCursor As Object) As Object
If NOT oTextCursor.isStartOfParagraph() Then
oTextCursor.gotoStartOfParagraph(false)
EndIf
getParaStart = oTextCursor.getStart()
End Function
Function getParaEnd(oTextCursor As Object) As Object
If NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.gotoEndOfParagraph(false)
EndIf
getParaEnd = oTextCursor.getEnd()
End Function
Function getParaSelected(oParaStart As Object,oParaEnd As Object) As Object
Dim oPara As Object
oPara = oParaStart.Text.createTextCursorByRange(oParaStart)
oPara.goToRange(oParaEnd,true)
getParaSelected = oPara
End Function
Function calculateMedianParaLen(oPara As Object) As Integer
Dim oTextCursor As Object
Dim oViewCursor As Object
Dim lineCount As Integer
Dim lineLen As Integer
Dim linesLen As Integer
linesLen = 0
calculateMedianParaLen = 0
lineCount = 0
lineLen = 0
If (Len (oPara.String) = 0) Then
Exit Function
EndIf
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(oPara, false)
oViewCursor.collapseToStart()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oParaStart = getParaStart(oTextCursor)
oViewCursor.goToRange(oParaStart,false)
While NOT oTextCursor.isEndOfParagraph()
oViewCursor.gotoEndOfLine(true)
lineLen = Len(oViewCursor.getString())
If lineLen &gt; 0 Then
linesLen = linesLen + lineLen
lineCount = lineCount + 1
oViewCursor.collapseToEnd()
oTextCursor.goToRange(oViewCursor,false)
Else
oTextCursor.goToRange(oViewCursor,false)
oTextCursor.goRight(1,false)
oViewCursor.goToRange(oTextCursor,false)
EndIf
Wend
If lineCount &gt; 0 Then
calculateMedianParaLen = linesLen / lineCount
EndIf
End Function
Sub convertBookmarksToFootnotes()
Dim description As String
description = getTranslation(&quot;convertIndesignFoonotesConfirmation&quot;)
@ -588,9 +952,7 @@ Sub convertBookmarksToFootnotes()
EndIf
convertLinkToFootnote(forwardLink,backwardLink)
EndIf
Next i
resetNotesStyle
MsgBox getTranslation(&quot;convertIndesignFootnotesFinish&quot;)
End Sub
@ -670,13 +1032,6 @@ Sub removeFootnoteSignInText
character = oViewCursor.String
Loop
oViewCursor.goRight(1,true)
character = oViewCursor.String
Do While isLinkCharacter(character)
oViewCursor.String = &quot;&quot;
oViewCursor.goRight(1,true)
character = oViewCursor.String
Loop
oViewCursor.goRight(1,false)
End Sub
Function isLinkCharacter(character As String) As Boolean
@ -763,8 +1118,10 @@ End Sub
Sub replaceParaStyle
dim oldStyleName As String
dim oldStyleNameLocalized As String
dim oldStyle As Object
dim newStyleName As String
dim newStyleNameLocalized As String
dim paragraphStyles As Object
dim userInput As Integer
Dim listBox As Object
@ -796,11 +1153,11 @@ Sub replaceParaStyle
listBox.addItems(sortedDPSN , 0)
oDialog.Title = getTranslation(&quot;replaceParaStyleDialogTitle&quot;)
oDialog.Execute()
newStyleName = oDialog.model.Tag
If newStyleName=&quot;0&quot; or newStyleName=&quot;&quot; Then
newStyleNameLocalized = oDialog.model.Tag
If newStyleNameLocalized=&quot;0&quot; or newStyleNameLocalized=&quot;&quot; Then
Exit sub
EndIf
foundIndex = getIndex(displayParaStyleNames, newStyleName)
foundIndex = getIndex(displayParaStyleNames, newStyleNameLocalized)
&apos;set style system name instead of display name
newStyleName = paraStyleNames(foundIndex)
@ -808,11 +1165,10 @@ Sub replaceParaStyle
MsgBox getTranslation(&quot;replaceParaStyleStylesEqualsNotification&quot;)
Exit sub
EndIf
If oldStyleName &lt;&gt; &quot;&quot; Then
oldStyle = paraStyles.getByName(oldStyleName)
If NOT oldStyle.isUserDefined Then
MsgBox getTranslation(&quot;replaceParaStyleCurrentStyleIsStandard&quot;)
replaceDefaultParaStyle(getLocalizedParaStyleName(oldStyleName), newStyleNameLocalized)
Exit sub
EndIf
oldStyle.ParentStyle = newStyleName
@ -830,10 +1186,70 @@ Sub replaceParaStyle
EndIf
EndIf
Wend
End Sub
Function getLocalizedParaStyleName(styleName as String) As String
Dim style As Object
Dim styles As Object
styles = ThisComponent.StyleFamilies
style = styles.getByName(styles.elementNames(1)).getByName(styleName)
getLocalizedParaStyleName = style.DisplayName
End Function
sub replaceDefaultParaStyle(fromStyle As String, toStyle As String)
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;SearchItem.StyleFamily&quot;
args1(0).Value = 2
args1(1).Name = &quot;SearchItem.CellType&quot;
args1(1).Value = 0
args1(2).Name = &quot;SearchItem.RowDirection&quot;
args1(2).Value = true
args1(3).Name = &quot;SearchItem.AllTables&quot;
args1(3).Value = false
args1(4).Name = &quot;SearchItem.SearchFiltered&quot;
args1(4).Value = false
args1(5).Name = &quot;SearchItem.Backward&quot;
args1(5).Value = false
args1(6).Name = &quot;SearchItem.Pattern&quot;
args1(6).Value = true
args1(7).Name = &quot;SearchItem.Content&quot;
args1(7).Value = false
args1(8).Name = &quot;SearchItem.AsianOptions&quot;
args1(8).Value = false
args1(9).Name = &quot;SearchItem.AlgorithmType&quot;
args1(9).Value = 0
args1(10).Name = &quot;SearchItem.SearchFlags&quot;
args1(10).Value = 65536
args1(11).Name = &quot;SearchItem.SearchString&quot;
args1(11).Value = fromStyle
args1(12).Name = &quot;SearchItem.ReplaceString&quot;
args1(12).Value = toStyle
args1(13).Name = &quot;SearchItem.Locale&quot;
args1(13).Value = 255
args1(14).Name = &quot;SearchItem.ChangedChars&quot;
args1(14).Value = 2
args1(15).Name = &quot;SearchItem.DeletedChars&quot;
args1(15).Value = 2
args1(16).Name = &quot;SearchItem.InsertedChars&quot;
args1(16).Value = 2
args1(17).Name = &quot;SearchItem.TransliterateFlags&quot;
args1(17).Value = 1280
args1(18).Name = &quot;SearchItem.Command&quot;
args1(18).Value = 3
args1(19).Name = &quot;SearchItem.SearchFormatted&quot;
args1(19).Value = false
args1(20).Name = &quot;SearchItem.AlgorithmType2&quot;
args1(20).Value = 1
args1(21).Name = &quot;Quiet&quot;
args1(21).Value = true
dispatcher.executeDispatch(document, &quot;.uno:ExecuteSearch&quot;, &quot;&quot;, 0, args1())
end sub
Function getIndex(array As variant, value As variant) As Integer
Dim id As Integer
Dim nRight As Integer
@ -888,4 +1304,26 @@ Sub subShellSort(mArray)
h = h \ 3
Loop
End Sub
sub setZoomToSpeedUpTasks
dim document as object
dim dispatcher as object
dim args1(2) as new com.sun.star.beans.PropertyValue
dim args2(1) as new com.sun.star.beans.PropertyValue
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
args1(0).Name = &quot;Zoom.Value&quot;
args1(0).Value = 60
args1(1).Name = &quot;Zoom.ValueSet&quot;
args1(1).Value = 28703
args1(2).Name = &quot;Zoom.Type&quot;
args1(2).Value = 0
dispatcher.executeDispatch(document, &quot;.uno:Zoom&quot;, &quot;&quot;, 0, args1())
args2(0).Name = &quot;ViewLayout.Columns&quot;
args2(0).Value = 1
args2(1).Name = &quot;ViewLayout.BookMode&quot;
args2(1).Value = false
dispatcher.executeDispatch(document, &quot;.uno:ViewLayout&quot;, &quot;&quot;, 0, args2())
end sub
</script:module>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks6
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks7
End Sub
Sub setUniqPageStyles
@ -362,7 +362,7 @@ Sub setUniqPageStylesDEPRECATED
End Sub
Function hasPageStyleWith(pageStyleName)
Function hasPageStyleWith(pageStyleName As String) As Boolean
Dim enum1 As Object
Dim enum1Element As Object
Dim curPage As String
@ -387,7 +387,7 @@ Function hasPageStyleWith(pageStyleName)
hasPageStyleWith = false
End Function
Function findFirstPageNumberWithStyle(pageStyleName)
Function findFirstPageNumberWithStyle(pageStyleName As String) As Integer
Dim enum1 As Object
Dim enum1Element As Object
Dim curPage As String
@ -396,6 +396,7 @@ Function findFirstPageNumberWithStyle(pageStyleName)
Dim oViewCursor As Object
Dim anchor As Object
Dim oSavePosition As Object
Dim curPageStyleName As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
enum1 = ThisComponent.Text.createEnumeration()

View file

@ -221,7 +221,6 @@ Sub runEndnotesConversionDialog(foundEndNotes As Variant)
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogDescriptionSelect&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;buttonOk&quot;)
Thiscomponent.CurrentController.select(ThisComponent.Text)
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark7
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark8
End Sub
Sub openFootNotesDialog
@ -284,4 +284,27 @@ Private Sub doNotTrack
args1(0).Value = true
dispatcher.executeDispatch(document, &quot;.uno:ShowTrackedChanges&quot;, &quot;&quot;, 0, args1())
End Sub
Sub FixFootnotes()
Dim description As String
Dim allNotes As Object
Dim aNote As Object
Dim oViewCursor As Object
turnOffTracking
AcceptAllTrackedChanges
oViewCursor = ThisComponent.currentController.getViewCursor()
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
allNotes = ThisComponent.FootNotes
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
anchor = aNote.anchor
oViewCursor.goToRange(anchor,false)
oViewCursor.collapseToStart()
oViewCursor.goToRange(anchor,true)
unoCut()
oViewCursor.goLeft(1,false)
unoPaste()
Next
End Sub
</script:module>

View file

@ -15,6 +15,7 @@ Private Sub convertHyphInDoc()
statusIndicator = ThisComponent.getCurrentController.StatusIndicator
statusIndicator.Start(getTranslation(&quot;hyphenationsInProgress&quot;),10)
turnOffTracking
setZoomToSpeedUpTasks()
AcceptAllTrackedChanges
convertHyphInText(ThisComponent.Text)
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
@ -434,7 +435,5 @@ Private Function confirm(description)
End Function
Sub Macro1
End Sub
</script:module>

View file

@ -263,7 +263,7 @@ Sub getFNAreaStart
End Sub
Function changeCharWidth(delta) As Boolean
Function changeCharWidth(delta As Integer) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim charScale As Integer
@ -277,7 +277,7 @@ Function changeCharWidth(delta) As Boolean
oViewCursor.charScaleWidth = charScale + delta
End Function
Function changeKern(delta) As Boolean
Function changeKern(delta As Integer) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim kerning As Integer

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal"> Dim pDialog As Object
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal">
Dim pDialog As Object
Sub pageStylesDialog
Dim listBox As Object
@ -356,8 +357,8 @@ Function covertMMtoLong(dimension As String) As Long
convertMMtoLong = -1
Exit Function
EndIf
dimension = customReplace(dimension, &quot;,&quot;, &quot;.&quot;)
If Not IsNumeric(dimension) Then
dimension = customReplace(dimension, &quot;.&quot;, &quot;,&quot;)
If Not IsNumeric( dimension ) Then
convertMMtoLong = -1
Exit Function
EndIf

View file

@ -18,6 +18,7 @@ Sub makeLinksWithLevel(level)
Dim outline() As Object
Dim oAnchor1Name As String
Dim oAnchor2Name As String
Dim message As String
Dim i As Integer
heading = getHeadingWithLevel(level)
outline = getOutlineWithLevel(level)
@ -31,7 +32,10 @@ Sub makeLinksWithLevel(level)
createLink(outline(i),&quot;&quot;,oAnchor2Name)
Next i
Else
MsgBox getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; (Ubound(heading)+1) &amp; &quot;)&quot;
message = getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp;&quot;) &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; &quot; (&quot; &amp; (Ubound(heading)+1) &amp; &quot;)&quot;
showTOCLinksDialog(message, heading(), outline() )
EndIf
ElseIf Ubound(outline) = -1 Then
&apos; MsgBox (getTranslation(&quot;TOCErrorNoContents1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoContents2&quot;))
@ -131,6 +135,95 @@ Function getOutlineWithLevel(curNum)
getOutlineWithLevel = par()
End Function
Sub showTOCLinksDialog(message As String, heading() As Object, outline() As Object)
Dim pDialog As Object
Dim grid As Object
Dim headingsColumn As Object
Dim tocColumn As Object
Dim oGridControl As Object
Dim oColumnModel As Object
Dim oDataModel As Object
Dim rect As Object
Dim i As Integer
Dim j As Integer
Dim outlineCell As String
Dim headingCell As String
DialogLibraries.LoadLibrary(&quot;ePublishing&quot;)
pDialog = CreateUnoDialog( DialogLibraries.ePublishing.toc_links )
&apos;grid = pDialog.getControl(&quot;grid&quot;)
grid = pDialog.Model.createInstance(&quot;com.sun.star.awt.grid.UnoControlGridModel&quot;)
grid.Name = &quot;tocGrid&quot;
grid.ShowColumnHeader = True
grid.ShowRowHeader = True
grid.VScroll = true
grid.Sizeable = true
grid.Step = 0
oColumnModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridColumnModel&quot;)
tocColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
tocColumn.Title = getTranslation(&quot;tocItemText&quot;)
tocColumn.ColumnWidth = 100
tocColumn.Resizeable = true
&apos;tocColumn.Flexibility = true
oColumnModel.addColumn( tocColumn )
headingsColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
headingsColumn.Title = getTranslation(&quot;headingItemText&quot;)
headingsColumn.ColumnWidth = 100
headingsColumn.Resizeable = true
&apos;headingsColumn.Flexibility = true
oColumnModel.addColumn( headingsColumn )
grid.ColumnModel = oColumnModel
&apos;grid.Sizeable = False
&apos;gridStep = 0
oDataModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridDataModel&quot;)
If Ubound(outline) &gt; Ubound(heading) Then
For i = 0 To (Ubound(outline))
outlineCell = outline(i).getString()
j = i MOD (Ubound(heading) + 1)
headingCell = heading(j).getString()
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next
Else
For i = 0 To (Ubound(heading))
headingCell = heading(i).getString()
If i &gt; Ubound(outline) Then
outlineCell = &quot;&quot;
Else
outlineCell = outline(i).getString()
EndIf
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next i
EndIf
grid.GridDataModel = oDataModel
oGridControl = createUnoService(&quot;com.sun.star.awt.grid.UnoControlGrid&quot;)
oGridControl.setModel(grid)
pDialog.addControl(&quot;gridtab&quot;, oGridControl)
rect = pDialog.getPosSize()
oGridControl.setPosSize(10,60,rect.Width - 20,rect.Height - 120, com.sun.star.awt.PosSize.POSSIZE)
pDialog.getControl(&quot;Ok&quot;).Label = getTranslation(&quot;buttonOk&quot;)
pDialog.getControl(&quot;message&quot;).SetText(message)
pDialog.Title = getTranslation(&quot;tocDialogLabel&quot;)
pDialog.Execute()
pDialog.dispose()
End Sub
Sub addToArray(xArray(),vNextElement)
Dim iUB As Integer
Dim iLB As Integer

View file

@ -29,7 +29,7 @@ End Function
Function getRussian(identifier As String) As String
Select Case identifier
Case &quot;buttonOk&quot;
getRussian = &quot;Применить&quot;
getRussian = &quot;OK&quot;
Exit Function
Case &quot;buttonCancel&quot;
getRussian = &quot;Отмена&quot;
@ -140,10 +140,10 @@ Function getRussian(identifier As String) As String
getRussian = &quot;Число параграфов со стилем Оглавление &quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getRussian = &quot;) не кратно числу Заголовоков&quot;
getRussian = &quot; не кратно числу Заголовоков&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getRussian = &quot;уровня (&quot;
getRussian = &quot;уровня &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getRussian = &quot;Вы уверены, что хотите запустить сборку выпуска ?&quot;
@ -295,6 +295,15 @@ Function getRussian(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getRussian = &quot;Найдены и стандартные и ручные концевые сноски. Можно сконвертировать стандартные в ручные (установите курсор в нужном параграфе) или ручные в стандартные&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getRussian = &quot;Ошибка&quot;
Exit Function
Case &quot;tocItemText&quot;
getRussian = &quot;Текст оглавления&quot;
Exit Function
Case &quot;headingItemText&quot;
getRussian = &quot;Текст заголовка&quot;
Exit Function
Case Else
getRussian = &quot;Перевод не найден&quot;
End Select
@ -415,10 +424,10 @@ Function getEnglish(identifier As String) As String
getEnglish = &quot;Number of paras with style Contents &quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getEnglish = &quot;) dosn&apos;t match number of headings with &quot;
getEnglish = &quot; dosn&apos;t match number of headings with &quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getEnglish = &quot;level (&quot;
getEnglish = &quot;level &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getEnglish = &quot;Compile journal issue from articles?&quot;
@ -570,6 +579,15 @@ Function getEnglish(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getEnglish = &quot;Both standard and manual endnotes are found. You can convert standard to manual (place the cursor in the desired paragraph) or manual to standard&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getEnglish = &quot;Error&quot;
Exit Function
Case &quot;tocItemText&quot;
getEnglish = &quot;Contents item text&quot;
Exit Function
Case &quot;headingItemText&quot;
getEnglish = &quot;Heading text&quot;
Exit Function
Case Else
getEnglish = &quot;No translation&quot;
End Select
@ -689,10 +707,10 @@ Function getFrench(identifier As String) As String
getFrench = &quot;Nombre de paragraphes avec style Table des matières.&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getFrench = &quot;) n&apos;est pas un multiple du nombre de titres&quot;
getFrench = &quot; n&apos;est pas un multiple du nombre de titres&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getFrench = &quot;au niveau (&quot;
getFrench = &quot;au niveau &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getFrench = &quot;Êtes-vous sûr de vouloir compiler un journal à partir d&apos;articles ?&quot;
@ -844,6 +862,15 @@ Function getFrench(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getFrench = &quot;Des notes de fin standard et manuelles sont trouvées. Vous pouvez convertir standard en manuel (placez le curseur dans le paragraphe souhaité) ou manuel en standard&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getFrench = &quot;Erreur&quot;
Exit Function
Case &quot;tocItemText&quot;
getFrench = &quot;Texte de l&apos;élément de contenu&quot;
Exit Function
Case &quot;headingItemText&quot;
getFrench = &quot;Texte d&apos;en-tête&quot;
Exit Function
Case Else
getFrench = &quot;No translation&quot;
End Select
@ -963,10 +990,10 @@ Function getCroatian(identifier As String) As String
getCroatian = &quot;Broj paragrafa sa stilom Sadržaj&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getCroatian = &quot;) nije višestruko od broja Zaglavlja&quot;
getCroatian = &quot; nije višestruko od broja Zaglavlja&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getCroatian = &quot;Nivoa (&quot;
getCroatian = &quot;Nivoa &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getCroatian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot;
@ -1118,6 +1145,15 @@ Function getCroatian(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getCroatian = &quot;Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getCroatian = &quot;Pogreška&quot;
Exit Function
Case &quot;tocItemText&quot;
getCroatian = &quot;Sadržaj teksta stavke&quot;
Exit Function
Case &quot;headingItemText&quot;
getCroatian = &quot;Tekst zaglavlja&quot;
Exit Function
Case Else
getCroatian = &quot;No translation&quot;
End Select
@ -1237,10 +1273,10 @@ Function getSerbian(identifier As String) As String
getSerbian = &quot;Број параграфа са стилом Садржај&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getSerbian = &quot;) није вишеструко од броја Заглавља&quot;
getSerbian = &quot; није вишеструко од броја Заглавља&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getSerbian = &quot;Нивоа (&quot;
getSerbian = &quot;Нивоа &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getSerbian = &quot;Да ли сте сигурни да желите да покренете градњу издања ?&quot;
@ -1392,6 +1428,15 @@ Function getSerbian(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getSerbian = &quot;Пронађене су и стандардне и ручне белешке. Можете претворити стандардни у ручни (поставите курсор у жељени одломак) или ручни у стандардни&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getSerbian = &quot;Грешка&quot;
Exit Function
Case &quot;tocItemText&quot;
getSerbian = &quot;Садржај текста ставке&quot;
Exit Function
Case &quot;headingItemText&quot;
getSerbian = &quot;Текст заглавља&quot;
Exit Function
Case Else
getSerbian = &quot;No translation&quot;
End Select
@ -1511,10 +1556,10 @@ Function getBosnian(identifier As String) As String
getBosnian = &quot;Broj paragrafa sa stilom Sadržaj&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings2&quot;
getBosnian = &quot;) nije višestruko od broja Zaglavlja&quot;
getBosnian = &quot; nije višestruko od broja Zaglavlja&quot;
Exit Function
Case &quot;TOCErrorContentsNotMatchHeadings3&quot;
getBosnian = &quot;Nivoa (&quot;
getBosnian = &quot;Nivoa &quot;
Exit Function
Case &quot;complileJournalIssueConfirmation&quot;
getBosnian = &quot;Da li ste sigurni da želite da pokrenete gradnju izdanja ?&quot;
@ -1666,6 +1711,15 @@ Function getBosnian(identifier As String) As String
Case &quot;EndnotesConversionTwoOptions&quot;
getBosnian = &quot;Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni&quot;
Exit Function
Case &quot;tocDialogLabel&quot;
getBosnian = &quot;Greška&quot;
Exit Function
Case &quot;tocItemText&quot;
getBosnian = &quot;Sadržaj teksta stavke&quot;
Exit Function
Case &quot;headingItemText&quot;
getBosnian = &quot;Tekst zaglavlja&quot;
Exit Function
Case Else
getBosnian = &quot;No translation&quot;
End Select

View file

@ -5,4 +5,5 @@
<library:element library:name="replaceParaStyle"/>
<library:element library:name="PageConfig"/>
<library:element library:name="EndnotesConversion"/>
<library:element library:name="toc_links"/>
</library:library>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark31
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark36
End sub
Dim templateName As String
@ -29,6 +29,7 @@ Private Sub makeUpIssue
If NOT confirm(description) Then
Exit Sub
EndIf
setZoomToSpeedUpTasks()
EIFN = &quot;ЭиФН&quot;
PHA = &quot;ФА&quot;
@ -662,7 +663,11 @@ Private Sub setArticleUniqPageStyles(i)
&apos;Iterate article page number
articlePageNum = articlePageNum + 1
&apos;GO TO NEXT PAGE
oViewCursor.jumpToNextPage()
If Not oViewCursor.jumpToNextPage() Then
MsgBox &quot;setArticleUniqPageStyles failed&quot;
End
EndIf
curPageStyleName = getNextPageStyleName()
Loop
@ -1131,248 +1136,278 @@ sub backspace
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:SwBackspace&quot;, &quot;&quot;, 0, Array())
end Sub
Sub shrinkPageContent
Dim oViewCursor As Object &apos;View cursor
Dim oTextCursor As Object &apos;Text cursor
Dim oViewCurInitPosition As Object
Dim oSaveEndSelection &apos;Text cursor
Dim oEnum &apos;Cursor enumeration
Dim oPar &apos;Current paragraph
Dim sTextContent$ &apos;Service name for text content.
Dim scaleWidthShrinkValue As Integer
Dim scaleCharHeight As Integer
Dim scaleIntervalHeight As Integer
Dim kernShrinkValue As Integer
Dim startOfPara As Boolean
&apos;saveCurrentVersion
kernShrinkValue = 8
scaleWidthShrinkValue = 7
scaleCharHeight = 2
scaleIntervalHeight = 3
sTextContent = &quot;com.sun.star.text.TextContent&quot;
Sub configureCursorPositionForContentShrink()
&apos; Globalscope.BasicLibraries.LoadLibrary(&quot;MRILib&quot;)
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim curSelection As Object
Dim selectionTextRange As Object
Dim nextChar As String
Dim prefChar As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCurInitPosition = oViewcursor.Text.createTextCursorByRange(oViewCursor)
&apos;Check if we are at start of paragraph go to the end of previous paragraph
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then
oViewCursor.goLeft(1,false)
If Len(oViewCursor.String) &lt;&gt; 1 Then
oViewCursor.goRight(1,false)
End If
End If
&apos;Move right to select left and right characters and save position to the right
oViewCursor.goRight(1,false)
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Select last 2 characters
oViewCursor.goLeft(2,true)
If Len(oViewCursor.String) = 2 Then
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Insert hyphen if needed
insertHyphen(oLastChars,oViewCursor)
End If
&apos;Return to initial position
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
oViewCursor.goLeft(1,false)
&apos;Set saved position to initial state
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.jumpToPreviousPage()
oViewCursor.jumpToStartOfPage()
fixViewCursor()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;If one of textRanges is Footnote or Endnote we can&apos;t select them so it is better to exit now
If oTextCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oTextCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
shrinkPageContent = false
oViewCursor.gotoRange(oViewCurInitPosition,false)
Exit Sub
EndIf
If oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
shrinkPageContent = false
oViewCursor.gotoRange(oViewCurInitPosition,false)
Exit Sub
EndIf
oTextCursor.gotoRange(oSaveEndSelection,true)
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
If shrinkIntervalHeight(oTextCursor,oViewCursor,scaleIntervalHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkCharHeight(oTextCursor,oViewCursor,scaleCharHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkKern(oTextCursor,oViewCursor,kernShrinkValue) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
&apos;At start of Para
oTextCursor.collapseToEnd()
If oTextCursor.isStartOfParagraph() AND NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.goLeft(1,false)
EndIf
oViewCursor.goToRange(oTextCursor,false)
End Sub
Sub splitPages
Dim oViewCursor As Object &apos;View cursor
Dim oText &apos;Text object in current document
Dim oSaveEndSelection &apos;Text cursor
&apos;saveCurrentVersion
Sub fixViewCursor()
Dim oViewCursor As Object
Dim curSelection As Object
Dim selectionTextRange As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
Dim saveFirstLineIndent As Boolean
&apos;Check if we are at start of paragraph go to the end of previous paragraph
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isEndOfParagraph() Then
oViewCursor.goRight(1,false)
End If
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then
saveFirstLineIndent = true
Else
saveFirstLineIndent = false
End If
oViewCursor.goRight(1,false)
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Select last 2 characters
oViewCursor.goLeft(2,true)
If Len(oViewCursor.String) = 2 Then
&apos;Insert hyphen if needed
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor)
insertHyphen(oLastChars,oViewCursor)
End If
&apos;Return to initial position
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
oViewCursor.goLeft(1,false)
insertPageBreak
If Not saveFirstLineIndent Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
curSelection = ThisComponent.getCurrentSelection()
If Not curSelection.supportsService(&quot;com.sun.star.text.TextRanges&quot;) Then
selectionTextRange = curSelection.Anchor
oViewCursor.JumpToFirstPage(false)
oViewCursor.goToRange(selectionTextRange,false)
EndIf
End Sub
Function shrinkScaleWidth(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charScaleWidth = 100 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkScaleWidth = true
Exit Function
End If
End If
Loop
Next i
shrinkScaleWidth = false
Function isContentPageChanged(initPosition As Object,initPageNum As String) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
isShrinkPageSucceded = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(initPosition,false)
If (oViewCursor.getPage &lt;&gt; initPageNum) Then
isContentPageChanged = true
EndIf
End Function
Function shrinkKern(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 2 To iterations Step 2
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.CharKerning = 0 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkKern = true
Exit Function
End If
End If
Loop
Next i
shrinkKern = false
Function breakParaAtCursor() As Object
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim leftMargin As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
If NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.goLeft(1,false)
oTextCursor.goRight(2,true)
insertHyphen(oTextCursor)
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
leftMargin = oViewCursor.ParaLeftMargin
insertPara
oViewCursor.ParaFirstLineIndent = leftMargin
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
Else
&apos;oTextCursor.goRight(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
&apos;oViewCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
&apos;oTextCursor.goLeft(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
EndIf
End Function
Function shrinkCharHeight(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charHeight = roundHeight(oPar.charHeight) - 0.1
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkCharHeight = true
Exit Function
End If
End If
Loop
Next i
shrinkCharHeight = false
sub insertPara
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:InsertPara&quot;, &quot;&quot;, 0, Array())
end sub
Function canShrinkContent() As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oSavePosition As Object
Dim oStartPosition As Object
Dim initPageNum As Long
Dim startPageNum As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
canShrinkContent = true
&apos;In endntote footnote or table shrink is not possible
If oViewCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
initPageNum = oViewcursor.getPage()
oViewCursor.JumpToPreviousPage(false)
oViewCursor.jumpToStartOfPage()
startPageNum = oViewcursor.getPage()
&apos;No previous page exists
If startPageNum = initPageNum Then
oViewCursor.goToRange(oSavePosition,false)
canShrinkContent = false
Exit Function
EndIf
&apos;If current paragraph has page break before
If oSavePosition.BreakType &lt;&gt; 0 Then
oTextCursor = oSavePosition.Text.createTextCursorByRange(oSavePosition)
oTextCursor.gotoStartOfParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
If oViewCursor.getPage() = initPageNum Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
EndIf
oViewCursor.goToRange(oSavePosition,false)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Do While oViewcursor.getPage() = initPageNum
oTextCursor.gotoPreviousParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
If oTextCursor.BreakType &lt;&gt; 0 AND oViewcursor.getPage() = initPageNum Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
Loop
oViewCursor.goToRange(oSavePosition,false)
End Function
Function roundHeight(nHeight)
Function shrinkPageContent() As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim initPosition As Object
Dim initPageNum As String
Dim oSaveEndSelection As Object
Dim oEnum As Variant
Dim oPar As Object
Dim startOfPara As Boolean
Dim targetContent() As Object
Dim delta As Double
Dim rounds As Integer
delta = 0.1
rounds = 3
Dim roundsLineHeight As Integer
roundsLineHeight = 3
Dim i As Integer
Dim j As Integer
shrinkPageContent = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
configureCursorPositionForContentShrink()
If Not canShrinkContent() Then
Exit Function
EndIf
initPageNum = oViewcursor.getPage()
initPosition = breakParaAtCursor()
oViewcursor.goToRange(initPosition,false)
oViewCursor.JumpToPreviousPage(false)
oViewCursor.jumpToStartOfPage()
startPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
targetContent = selectContentToShrink(initPosition,startPosition)
For i = LBound(targetContent) To Ubound(targetContent)
shrinkContentSpacing(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
&apos;TODO: Уменьшая отступы каждого параграфа от и до следующего
&apos; а также уменьшая кернинг, межстрочное расстояние и кегль
For j = 0 To rounds
For i = LBound(targetContent) To Ubound(targetContent)
If (j &gt; 0) Then
decreaseContentCharHeight(targetContent(i), delta)
EndIf
If shrinkContentWithKerning(targetContent(i)) Then
balanceContentTail(targetContent(i),false)
EndIf
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
decreaseIntervalHeight(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
increaseIntervalHeight(targetContent(i))
Next i
Next j
For i = LBound(targetContent) To Ubound(targetContent)
increaseContentCharHeight(targetContent(i), delta * rounds )
Next i
End Function
Function increaseIntervalHeight(oContent As Object) As Boolean
increaseIntervalHeight = false
Dim oParEnum As Object
Dim oPar As Object
Dim oSecEnum As Object
Dim oParSection As Object
Dim pageNum As Integer
Dim lineSpacing As Object
If Not IsMissing(oContent.ParaLineSpacing) Then
lineSpacing = oContent.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height / 0.98
oContent.ParaLineSpacing = lineSpacing
increaseIntervalHeight = true
End If
End If
End Function
Function decreaseIntervalHeight(oContent As Object) As Boolean
decreaseIntervalHeight = false
Dim oParEnum As Object
Dim oPar As Object
Dim oSecEnum As Object
Dim oParSection As Object
Dim pageNum As Integer
Dim lineSpacing As Object
If Not IsMissing(oContent.ParaLineSpacing) Then
lineSpacing = oContent.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oContent.ParaLineSpacing = lineSpacing
decreaseIntervalHeight = true
End If
EndIf
End Function
Sub decreaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Dim oTextCursor As Object
contentEnum = oContent.createEnumeration()
Do While contentEnum.hasMoreElements()
textContentElement = contentEnum.nextElement()
oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
curHeight = oTextCursor.charHeight
oTextCursor.charHeight = roundHeight(curHeight) - delta
Loop
End Sub
Sub increaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Dim oTextCursor As Object
contentEnum = oContent.createEnumeration()
Do While contentEnum.hasMoreElements()
textContentElement = contentEnum.nextElement()
oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
curHeight = oTextCursor.charHeight
oTextCursor.charHeight = roundHeight(curHeight) + delta
Loop
End Sub
Function roundHeight(nHeight) As Double
Dim lHeight As Double
Dim hHeight As Double
lHeight = Int(nHeight)
@ -1388,127 +1423,74 @@ Function roundHeight(nHeight)
roundHeight=lHeight
End Function
Function shrinkIntervalHeight(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
Dim lineSpacing
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
lineSpacing = oPar.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oPar.ParaLineSpacing = lineSpacing
End If
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkIntervalHeight = true
Exit Function
End If
End If
Loop
Next i
shrinkIntervalHeight = false
Function shrinkContentSpacing(oContent As Object) As Boolean
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
shrinkContentSpacing = false
If oContent.ParaTopMargin &gt; MIN_SPACING_TO_SHRINK Then
oContent.ParaTopMargin = 0
EndIf
If oContent.ParaBottomMargin &gt; MIN_SPACING_TO_SHRINK Then
oContent.ParaTopMargin = 0
EndIf
End Function
Sub savecursor
Dim oViewCursor As Object &apos;View cursor
Dim oTextCursor &apos;Text cursor
Dim oSaveEndSelection &apos;Text cursor
Dim oEnum &apos;Cursor enumeration
Dim oText &apos;Text object in current document
Dim oPar &apos;Current paragraph
Dim sTextContent$ &apos;Service name for text content.
sTextContent = &quot;com.sun.star.text.TextContent&quot;
Function selectContentToShrink(initPosition As Object, startPosition As Object)
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim startPageNum As Long
Dim prevPageNum As Long
Dim savePosition As Object
Dim foundPrevPara As Boolean
Dim targetContent() As Variant
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
REM oViewCursor.getText.insertString(oViewCursor.getStart(), CHR$(257), False)
&apos;If Not oViewCursor.jumpToPreviousPage() Then Exit Sub
oViewCursor.jumpToPreviousPage()
oViewCursor.jumpToStartOfPage()
&apos;oViewCursor.goUp(10,true)
&apos;oViewCursor.getPage()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;oTextCursor.gotoStart(false)
oTextCursor.gotoRange(oSaveEndSelection,true)
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
Dim oSubSection
Dim oSecEnum
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
oPar.charScaleWidth = oPar.charScaleWidth - 1
Dim charHeight
charHeight= oPar.charHeight
Dim lineSpacing
lineSpacing = oPar.ParaLineSpacing
MsgBox lineSpacing.Mode &amp; lineSpacing.Height
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
nPars = nPars + 1
oSecEnum = oPar.createEnumeration()
s = s &amp; nPars &amp; &quot;:&quot;
Do While oSecEnum.hasMoreElements()
oParSection = oSecEnum.nextElement()
oParSection.charScaleWidth = oParSection.charScaleWidth - 1
oParSection.CharHeight = oParSection.CharHeight * 0.99
s = s &amp; oParSection.TextPortionType &amp; &quot; Scale &quot; &amp; oParSection.CharScaleWidth &amp; &quot; Scale &quot; &amp; oParSection.CharHeight &amp; &quot;:&quot;
Loop
s = s &amp; CHR$(10)
If nPars MOD 10 = 0 Then
MsgBox s, 0, &quot;Paragraph Text Sections&quot;
s = &quot;&quot;
End If
End If
Loop
Loop
End Sub
oViewcursor.goToRange(startPosition,false)
prevPageNum = oViewcursor.getPage()
oViewcursor.goToRange(initPosition,false)
startPageNum = oViewcursor.getPage()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Do While startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()
savePosition = oTextCursor.getStart()
oTextCursor.gotoStartOfParagraph(true)
oViewCursor.goToRange(oTextCursor,false)
oViewCursor.collapseToStart()
If Len(oTextCursor.String) &gt; 0 Then
If (startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()) Then
AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
Else
oTextCursor.goToRange(savePosition,false)
oViewCursor.goToRange(oTextCursor,false)
oViewCursor.JumpToStartOfPage(false)
oTextCursor.goToRange(oViewCursor,true)
AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
EndIf
EndIf
foundPrevPara = oTextCursor.gotoPreviousParagraph(false)
If (foundPrevPara = false) Then
Exit Do
EndIf
oTextCursor.gotoEndOfParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
Loop
selectContentToShrink = targetContent
End Function
sub insertPageBreak
rem ----------------------------------------------------------------------
rem define variables
Sub insertPageBreak
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, &quot;.uno:InsertPagebreak&quot;, &quot;&quot;, 0, Array())
end sub
Sub insertHyphen(oTextCursor,oViewCursor)
Dim lastChars
&apos;lastChars = oTextCursor.getString()
replacementhyp
&apos;MsgBox lastChars
End Sub
sub replacementhyp
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
Sub insertHyphen(twoCharactersToHyphen As Object)
Dim oViewCursor As Object
Dim document as Object
Dim dispatcher as Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(twoCharactersToHyphen,false)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;SearchItem.StyleFamily&quot;
args1(0).Value = 2
@ -1535,6 +1517,7 @@ sub replacementhyp
args1(11).Name = &quot;SearchItem.SearchString&quot;
args1(11).Value = &quot;([a-zA-Zа-яА-Я])([a-zA-Zа-яА-Я])&quot;
args1(12).Name = &quot;SearchItem.ReplaceString&quot;
&apos; &quot;$1 U+00AD $2&quot;
args1(12).Value = &quot;$1­$2&quot;
args1(13).Name = &quot;SearchItem.Locale&quot;
args1(13).Value = 255

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="toc_links" dlg:left="74" dlg:top="15" dlg:width="346" dlg:height="284" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:button dlg:id="Ok" dlg:tab-index="0" dlg:left="125" dlg:top="265" dlg:width="96" dlg:height="17" dlg:value="CommandButton1" dlg:button-type="ok"/>
<dlg:text dlg:id="message" dlg:tab-index="1" dlg:left="5" dlg:top="4" dlg:width="334" dlg:height="24" dlg:value="message" dlg:align="center" dlg:multiline="true"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -2,9 +2,9 @@
<description xmlns="http://openoffice.org/extensions/update/2006"
xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing"/>
<version value="0.7.4" />
<version value="0.7.16" />
<update-download>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/09c381d47a83cc10ee0ba408ffd6d9ab/epublishing.oxt" />
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/9e6d9eaeb144d7a67e94c8460492a040/epublishing.oxt" />
</update-download>
<release-notes>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/-/raw/master/releasenotes.txt" lang="en" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

263
icons/addon_icon.svg Normal file
View file

@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg8655"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="addon_icon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8657"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="112.01994"
inkscape:cy="108.32697"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs8652" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-104.6842,-132.32068)">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="ccccccccccccccccccccc"
inkscape:connector-curvature="0"
d="m 132.37039,148.26988 h -2.07136 v -0.57304 h 2.07136 v -1.68816 h -1.38092 v -0.57303 h 1.38092 v -2.03656 h -4.83319 v 15.16484 h 4.83319 v -5.70978 h -2.07136 v -0.57304 h 2.07136 v -1.7191 h -1.38092 v -0.57303 h 1.38092 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2848-0-7"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 123.12724,144.21435 h 1.30516 l -0.65258,-2.26642 z"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2850-4-7"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 122.94511,145.10139 -1.08709,2.86162 h 3.88288 l -1.0871,-2.86162 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.714155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2854-3-4"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
id="rect9098"
width="4.2093248"
height="8.8333616"
x="121.6905"
y="148.86641"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
id="path2860-2-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 117.70046,140.80732 -2.45727,5.17649 1.15636,3.65475 h 2.89147 l 1.15637,-3.65475 -2.45784,-5.17649 v 3.8386 a 0.57822907,0.91357072 0 1 1 -0.28909,0 z m -1.30091,9.28765 v 8.34889 h 2.89147 v -8.34889 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path1875-1-2"
style="clip-rule:evenodd;fill:#b6b6b6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
d="m 111.57969,157.82045 v 32.51431 h 2.7094 v -28.51764 c 0,-0.34404 0.26584,-0.6222 0.59428,-0.6222 h 23.37945 23.3748 c 0.32864,0 0.59428,0.27816 0.59428,0.6222 v 28.51764 h 2.70991 v -32.51431 z m 26.68313,33.75867 v 0 h -23.37945 -0.0145 -3.87884 -0.0196 -4.02818 v 2.9347 c 0,0.80971 0.31401,1.54308 0.82114,2.07428 0.51184,0.53145 1.21262,0.86506 1.98541,0.86506 h 57.02856 c 0.77299,0 1.47311,-0.33361 1.98024,-0.8599 0.50695,-0.53636 0.82114,-1.27024 0.82114,-2.07997 v -2.9347 h -4.02818 -0.015 -3.87884 -0.0191 z m -0.0944,0.86744 c 0.55085,0 1.04846,0.2331 1.41077,0.61238 0.35756,0.3797 0.58446,0.90046 0.58446,1.47743 0,0.57677 -0.2269,1.10308 -0.58446,1.47744 -0.36231,0.3797 -0.85992,0.61235 -1.41077,0.61235 -0.5506,0 -1.05288,-0.23265 -1.41025,-0.61235 l -0.0434,-0.0455 c -0.33828,-0.37436 -0.54105,-0.88053 -0.54105,-1.43195 0,-0.57697 0.22217,-1.09773 0.58446,-1.47743 0.35758,-0.37931 0.85965,-0.61238 1.41025,-0.61238 z m 0,1.24489 c -0.22217,0 -0.4249,0.0959 -0.57464,0.24755 -0.14505,0.15171 -0.23668,0.36443 -0.23668,0.59737 0,0.22262 0.0819,0.42498 0.21239,0.57153 l 0.0243,0.0254 c 0.14983,0.15661 0.35265,0.24805 0.57464,0.24805 0.22217,0 0.42495,-0.0914 0.56999,-0.24805 0.14484,-0.15214 0.23668,-0.36412 0.23668,-0.59685 0,-0.23273 -0.23668,-0.59687 -0.23668,-0.59687 v 0 c 0,0 -0.34759,-0.24755 -0.56999,-0.24755 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
sodipodi:nodetypes="cccsscsscccccccccccscsscsccccccccscsccscccccscsscssscc" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-5-5-6"
width="20.554724"
height="1.2916876"
x="123.94579"
y="168.00031"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-5-4"
width="25.511669"
height="1.2916876"
x="119.06848"
y="187.27496"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-5-8-5-1-9"
width="25.511669"
height="1.2916876"
x="118.98883"
y="172.7865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-4-8-3-6-8"
width="25.511669"
height="1.2916876"
x="119.06848"
y="182.48865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.97035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-0-6-3-0-4"
width="22.040318"
height="1.2916876"
x="119.06848"
y="177.70239"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.639035;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="path3451-4-2"
cx="144.54961"
cy="158.14117"
rx="4.860126"
ry="4.6989589"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path2846-4-4"
style="fill:#cecece;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 156.56806,135.84201 -0.40979,1.97146 a 11.102961,10.641572 0 0 0 -1.77767,0.4594 l -1.33894,-1.43245 a 13.045401,12.503294 0 0 0 -2.74298,1.53683 l 0.61908,1.80713 a 11.269889,10.801564 0 0 0 -1.3038,1.25005 l -1.88567,-0.59375 a 13.044093,12.50204 0 0 0 -1.60352,2.62929 l 1.49397,1.28313 a 11.097151,10.636004 0 0 0 -0.47904,1.70378 l -2.05673,0.39325 v 3.05356 l 2.05673,0.39325 a 11.095506,10.634428 0 0 0 0.39222,1.46399 l -0.73846,0.41032 a 6.8815349,6.5955698 0 0 0 -1.0976,-0.32917 l -0.64699,-1.45471 h -1.81591 l -0.64699,1.45471 a 6.8863609,6.6001955 0 0 0 -1.09761,0.32866 l -1.39319,-0.77411 a 8.1941513,7.8536402 0 0 0 -1.46968,1.00819 l 0.35553,1.48622 -0.67283,0.87177 -1.62109,0.14211 a 7.831057,7.5056343 0 0 0 -0.5674,1.61748 l 1.33687,1.01285 v 1.07953 l -1.33687,1.01338 a 7.8336105,7.5080817 0 0 0 0.5674,1.61695 l 1.62109,0.1421 0.67231,0.87181 -0.35501,1.48672 a 8.1953078,7.8547488 0 0 0 1.46916,1.00769 l 1.39371,-0.77412 a 6.8815349,6.5955698 0 0 0 1.09761,0.32867 l 0.64699,1.40509 h 1.81591 l 0.64699,-1.40509 a 6.8835862,6.5975361 0 0 0 1.0976,-0.32867 l 1.3932,0.77412 a 8.1941513,7.8536402 0 0 0 1.46968,-1.00769 l -0.35553,-1.48672 0.67282,-0.87128 1.62109,-0.14211 a 7.8318192,7.5063648 0 0 0 0.56741,-1.61747 l -0.50488,-0.38293 a 13.044718,12.502639 0 0 0 1.38441,0.66817 l 1.33842,-1.43245 a 11.105361,10.643874 0 0 0 1.77819,0.4594 l 0.40979,1.97146 h 3.18637 l 0.40979,-1.97146 a 11.10309,10.641698 0 0 0 1.77767,-0.4589 l 1.33894,1.43195 a 13.046811,12.504646 0 0 0 2.74298,-1.53685 l -0.61908,-1.80661 a 11.274289,10.805781 0 0 0 1.30431,-1.25058 l 1.88516,0.59378 a 13.044718,12.502639 0 0 0 1.60404,-2.62879 l -1.49449,-1.28363 a 11.105231,10.643748 0 0 0 0.47905,-1.70378 l 2.05723,-0.39325 v -3.05356 l -2.05723,-0.39275 a 11.097067,10.635923 0 0 0 -0.47905,-1.70428 l 1.49449,-1.28313 a 13.046811,12.504646 0 0 0 -1.60352,-2.62879 l -1.88568,0.59325 a 11.269889,10.801564 0 0 0 -1.30431,-1.25005 l 0.6196,-1.80713 a 13.044718,12.502639 0 0 0 -2.74298,-1.53683 l -1.33894,1.43245 a 11.105231,10.643748 0 0 0 -1.77819,-0.4594 l -0.40979,-1.97146 z m 1.53272,5.37229 a 7.4734009,7.1628407 0 0 1 7.53391,7.16287 7.4734009,7.1628407 0 0 1 -7.47344,7.16286 7.4734899,7.1629247 0 0 1 -0.0605,-14.32573 z m -0.16433,4.38269 a 2.7811034,2.6888794 0 0 0 -2.77606,2.68872 2.7811034,2.6888794 0 0 0 2.78071,2.68872 2.7811034,2.6888794 0 0 0 2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -0.005,0 z m -13.79554,8.63409 a 4.0105414,3.8438817 0 1 1 -4.01061,3.84421 4.0105414,3.8438817 0 0 1 4.01061,-3.84421 z m 0.046,1.58647 a 2.2417849,2.1674453 0 0 0 -2.24172,2.16731 2.2417849,2.1674453 0 0 0 2.24172,2.16781 2.2417849,2.1674453 0 0 0 2.24173,-2.16781 2.2417849,2.1674453 0 0 0 -2.24173,-2.16731 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 149.99326,167.37867 v -2.09802"
id="path1537-6-4"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 149.99327,188.56219 -1e-5,-17.80174"
id="path1506-9-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="149.99326"
cy="169.06958"
id="path1512-6-3"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 154.3994,172.16728 v -6.88663"
id="path1530-8-2"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 154.39941,188.61138 -10e-6,-13.06231"
id="path1510-0-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="154.39941"
cy="173.85822"
id="circle1514-8-8"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 158.80553,168.86349 v -3.58284"
id="path1523-6-6"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="M 158.80554,188.60154 V 172.24526"
id="path1508-7-9"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="158.80553"
cy="170.55444"
id="circle1516-5-9"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
ry="1.1019053"
rx="1.1396987"
cy="148.22153"
cx="157.88336"
id="path3451-5-6-3-46-3"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.25995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect4991-5-0-5-8"
width="67.73333"
height="67.73333"
x="104.6842"
y="132.32068"
ry="0.089716367"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

97
icons/decChar.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg8011"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decchar.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8013"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="145.88578"
inkscape:cy="80.080498"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="49.561416,111.39896"
orientation="0,-1"
id="guide827" />
</sodipodi:namedview>
<defs
id="defs8008" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-105.05268,-164.01051)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="104.9709"
y="163.94754" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-519.98047,-757.85626)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 117.74779,192.69455 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 160.06694,192.69455 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="104.97087"
y="163.94754" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/decKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.733329 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="84.606788"
inkscape:cy="174.78439"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-53.01717,-69.4972)">
<rect
y="69.4972"
x="53.01717"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 54.72981,114.22729 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281567 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281549 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z M 64.833,98.0165 H 75.99973 L 70.62906,81.08085 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2-4"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.09436,116.08178 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 79.18886,71.864135 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386948 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 100.76564,114.62338 q -1.59528,-5.40359 -5.05163,-17.19925 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71036,25.700004 h 0.15962 l 7.33809,-26.424888 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11666,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28651,0 -3.50952,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05923 -5.10481,17.59463 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 101.68467,117.40379 -13.026836,9.55858 13.026836,9.55873 0.0275,-4.76566 h 18.65975 v -9.58604 h -18.65975 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 72.381126,117.25351 13.02687,9.55858 -13.02687,9.55873 -0.0275,-4.76566 H 53.693883 v -9.58604 h 18.659743 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

153
icons/endnotes.svg Normal file
View file

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2486"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="endnotes.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2488"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.6903844"
inkscape:cx="83.708771"
inkscape:cy="81.638236"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2483" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.892647,-111.68544)">
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
y="111.68544"
x="92.892647"
height="67.73333"
width="67.73333"
id="rect3292"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="135.49535"
x="95.049019"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1"
width="8.2611904"
height="5.0871596"
x="150.44847"
y="135.49535" />
<path
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
sodipodi:nodetypes="cccccc"
style="fill:#ff6600;fill-opacity:1;stroke-width:3.89118"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-37-2"
d="m 157.55297,151.61926 -13.85782,13.28552 -13.85804,-13.28552 9.21069,-0.0292 9.29454,-2e-5 z" />
<rect
y="127.10445"
x="150.46057"
height="5.0871596"
width="8.2611904"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2"
width="40.605831"
height="5.0871596"
x="95.057297"
y="127.22473" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4-1"
width="8.2611904"
height="5.0871596"
x="150.49835"
y="143.73186" />
<rect
y="143.93459"
x="95.058357"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2-7"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
y="167.01994"
x="101.8401"
height="3.5655646"
width="56.980888"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5-7"
width="56.980892"
height="3.5655646"
x="101.83765"
y="174.05339" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
r="2.3487535"
cy="168.64861"
cx="98.229622"
id="path3707"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.56849;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.5685;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3707-1"
cx="98.270699"
cy="175.60979"
r="2.3487535" />
<path
style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.786563,114.60607 h 40.431997 c 9.72673,0 12.52136,5.48131 12.52136,12.52137 v 25.97065 h -8.81151 v -24.64861 c 0,-3.02882 -0.65494,-5.90145 -6.22771,-6.06022 H 94.761584 Z"
id="path5209"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

90
icons/incChar.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg7825"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="symbol_plus.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7827"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0154442"
inkscape:cx="9.3555114"
inkscape:cy="35.452464"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs7822" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-131.95218,-153.69289)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="131.95221"
y="153.69289" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-492.99916,-768.11092)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 145.66063,182.43989 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 185.76848,182.43989 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="131.95218"
y="153.69289" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/incKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg2700"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="incKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2702"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="128.76138"
inkscape:cy="144.76423"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2697" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-114.87222,-84.436211)">
<rect
y="84.436211"
x="114.87222"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 116.58485,129.16631 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281577 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281559 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z m 10.10319,-16.2108 h 11.16673 L 132.4841,96.01986 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 155.9494,131.0208 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 141.0439,86.803145 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386958 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 162.62067,129.5624 q -1.59527,-5.40359 -5.05162,-17.19926 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71035,25.700014 h 0.15962 l 7.33809,-26.424898 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11667,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28652,0 -3.50953,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05924 -5.10481,17.59464 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 169.20012,132.34281 13.02687,9.55857 -13.02687,9.55873 -0.0275,-4.76566 h -17.07224 v -9.58603 h 17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 128.57579,132.19253 -13.02687,9.55857 13.02687,9.55873 0.0275,-4.76566 h 17.07224 v -9.58603 h -17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

97
icons/links.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2924"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="links.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308885"
inkscape:cx="80.506637"
inkscape:cy="128.02279"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2921" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-62.071301,-83.900757)">
<path
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,128.42133 v 4.5 h 12.83916 c 0.0967,-1.57265 2.4477,-3.09012 2.94527,-4.5 z m 41.145354,0 -3.50074,4.5 h 27.64836 v -4.5 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
d="m 128.52123,106.7402 v -4.5 h -12.83916 c -0.0967,1.57263 -2.44771,3.09012 -2.94527,4.5 z m -41.145358,0 5.085514,-4.5 H 63.228252 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58843,97.727829 v -4.5 h -10.35091 c 0.6888,1.376399 0.15148,2.896634 0.41261,4.5 z m -31.934402,0 3.500762,-4.5 H 63.295448 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58362,89.074333 v -4.5 H 63.290647 v 4.5 h 40.157263 c 1.80892,-1.743618 3.99687,-2.687929 6.29866,-2.687929 h 10e-4 c 2.30145,8.18e-4 4.49043,0.944896 6.29965,2.687929 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50922;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,137.46204 v 4.5 h 10.35091 c -0.6888,-1.37639 -0.15149,-2.89663 -0.41261,-4.5 z m 31.93439,0 -3.50076,4.5 h 36.859344 v -4.5 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,146.17315 v 4.5 h 65.292974 v -4.5 H 88.423956 c -1.80893,1.74361 -3.99687,2.68793 -6.29866,2.68793 h -0.001 c -2.30146,-7.8e-4 -4.49044,-0.9449 -6.29965,-2.68793 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 90.271426,114.39038 -16.2298,16.23069 c -2.05842,2.05665 -3.19117,4.79255 -3.19117,7.70296 0,2.91177 1.13409,5.64724 3.19161,7.70388 2.05707,2.05661 4.79344,3.19025 7.70296,3.19115 h 8.7e-4 c 2.90997,0 5.64499,-1.13364 7.70206,-3.19115 l 16.230714,-16.23117 c 3.34022,-3.34021 4.13332,-8.41483 2.041,-12.58073 l -3.56339,3.56381 c 0.44275,2.08296 -0.19771,4.27035 -1.70983,5.78291 l -16.638644,16.63731 -0.0116,-0.0109 c -1.18364,1.03365 -2.67833,1.59735 -4.25204,1.59735 -1.68172,0 -3.25587,-0.64851 -4.43504,-1.82634 -1.19657,-1.1961 -1.84328,-2.79347 -1.82676,-4.49795 0.0161,-1.5514 0.58065,-3.0229 1.59959,-4.19091 l -0.0104,-0.009 0.22806,-0.22985 c 0.0299,-0.0316 0.0611,-0.0642 0.0919,-0.0942 0.0104,-0.01 0.0192,-0.0197 0.0286,-0.0277 l 0.055,-0.0557 16.2298,-16.23071 c 1.19435,-1.193 2.78056,-1.84954 4.46673,-1.84954 0.43606,0 0.86899,0.0452 1.29388,0.13302 l 3.567384,-3.56831 c -1.49961,-0.74802 -3.167494,-1.13988 -4.859924,-1.13988 -2.90908,5.3e-4 -5.645,1.13364 -7.70252,3.19027 M 121.77679,97.012846 c 0,-2.90999 -1.13407,-5.645891 -3.19115,-7.702521 -2.0575,-2.05886 -4.79343,-3.19159 -7.70385,-3.19159 -2.90952,0 -5.64499,1.13318 -7.70207,3.19159 L 86.948586,105.53961 c -3.338,3.33755 -4.13288,8.40857 -2.04638,12.57271 l 3.41253,-3.41254 c -0.39141,-1.9495 0.15979,-4.00077 1.47954,-5.51467 l -0.0104,-0.01 0.22406,-0.22627 c 0.0286,-0.0299 0.0598,-0.0616 0.0897,-0.0921 0.0104,-0.009 0.0179,-0.0178 0.0276,-0.0267 l 0.0562,-0.0567 16.229374,-16.229834 c 1.19389,-1.19389 2.78099,-1.85087 4.4694,-1.85087 1.68885,0 3.27551,0.65698 4.4694,1.85087 2.46455,2.46412 2.46455,6.47604 0,8.938374 l -16.635504,16.63774 -0.0117,-0.0116 c -1.18541,1.0341 -2.67744,1.59825 -4.25161,1.59825 -0.42443,0 -0.84398,-0.0419 -1.25594,-0.12408 l -3.41207,3.41209 c 1.50364,0.75025 3.17198,1.1439 4.86795,1.1439 2.91134,0 5.646794,-1.1332 7.703874,-3.19028 l 16.23026,-16.23024 c 2.05751,-2.05887 3.19071,-4.794315 3.19071,-7.705205"
id="path1214-3-8-8"
style="fill:#0003ff;fill-opacity:1;stroke:#1c26ff;stroke-width:0.446;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

158
icons/paragraph.svg Normal file
View file

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg9916"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="paragraph.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview9918"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:snap-global="false"
inkscape:zoom="2.0308884"
inkscape:cx="115.46671"
inkscape:cy="156.08932"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs9913" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.524155,-109.47453)">
<rect
y="109.47453"
x="92.524155"
height="67.73333"
width="67.73333"
id="rect982-9-2-9-7-0"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
id="rect847-2-0-2"
style="fill:none;stroke:#000000;stroke-width:1.99356;paint-order:stroke markers fill;stop-color:#000000"
d="m 124.78694,132.07734 v -20.799 h 32.55138 v 43.20213 l -28.57395,0"
sodipodi:nodetypes="ccccc" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.47294;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-4"
width="21.80117"
height="4.6439242"
x="132.51495"
y="114.49986" />
<rect
y="124.22032"
x="128.09102"
height="4.6439242"
width="26.394829"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-0"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-80"
width="26.394829"
height="4.6439242"
x="128.12129"
y="133.61826" />
<path
id="path1659-3-4-3-2"
fill="#241F20"
d="m 147.82818,157.32917 8.99869,8.75745 h -3.83501 c -0.65909,7.11404 -5.34633,13.64931 -19.22877,8.60297 7.33777,0.27447 8.63092,-3.725 8.96976,-8.60294 h -4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.593436"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<path
id="path1659-3-4-3-2-0"
fill="#241F20"
d="m 106.39267,129.95823 -8.998683,-9.02248 h 3.835003 c 0.65909,-7.32934 5.34633,-14.06239 19.22877,-8.86332 -7.33777,-0.28279 -8.63092,3.83772 -8.96976,8.86329 h 4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.602349"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<rect
y="144.05806"
x="129.3343"
height="4.6439242"
width="25.151567"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8-5"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.5821;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.99141;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect847-2-0-1-0"
width="33.820812"
height="42.416"
x="95.032234"
y="132.36934"
ry="0" />
<rect
y="138.01369"
x="101.99397"
height="4.9674153"
width="24.004038"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3"
width="27.996544"
height="4.9674153"
x="98.001465"
y="147.7115" />
<rect
y="157.37741"
x="98.001472"
height="4.9674153"
width="27.996544"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8"
width="27.996544"
height="4.9674153"
x="98.00148"
y="166.80212" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

96
icons/press_text.svg Normal file
View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="press_text.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="59.826033"
inkscape:cy="109.80416"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:lockguides="true" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-44.252445,-77.047729)">
<rect
y="77.047729"
x="44.252445"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-9-12"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
y="108.00449"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-46"
width="64.078773"
height="6.5124974"
x="45.6674"
y="95.987839" />
<rect
y="120.45139"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-4-0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
d="m 62.836441,77.914258 14.82678,14.252148 14.82704,-14.252148 z"
id="path966-9-6-0-2-7-3-4-34-6-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20472"
sodipodi:nodetypes="cccc"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
sodipodi:nodetypes="cccc"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20826"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-7-3-4-34-6-9-9"
d="m 63.55667,144.36014 14.82678,-14.27159 14.82704,14.27159 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

108
icons/tail.svg Normal file
View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="hvost.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
id="svg2650"
version="1.1"
viewBox="0 0 67.73333 67.73333"
height="67.73333mm"
width="67.73333mm">
<defs
id="defs2644" />
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="992"
inkscape:window-width="1920"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="161.53655"
inkscape:cx="48.279563"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata2647">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-94.593422,-56.778362)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:2.02445;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6"
width="18.675617"
height="10.240829"
x="96.890099"
y="108.6032" />
<path
d="m 148.55629,103.93948 11.61928,9.55377 -11.61928,9.55393 -0.0327,-6.34998 h -7.8785 v -6.4078 h 7.87849 z"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3"
inkscape:connector-curvature="0"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccc"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3-8"
d="m 128.61418,123.04712 -11.61928,-9.55377 11.61928,-9.55392 0.0327,6.34997 h 7.8785 v 6.4078 h -7.87849 z" />
<rect
y="91.483078"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8"
width="62.825058"
height="10.240829"
x="96.890099"
y="74.892128" />
<rect
y="59.359539"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8-3"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.