Convert arabic,greek and chinese fonts with punctuation and spaces

This commit is contained in:
Georgy Litvinov 2021-04-30 13:55:27 +02:00
parent 90740a0da2
commit 717eccdc4a

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="Clean" script:language="StarBasic">Sub mark78
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Clean" script:language="StarBasic">Sub mark79
End Sub
@ -295,7 +295,8 @@ Private Sub unicodeSymbolsConversion
convertWLLatin2IPHAstra
convertSymbol
Dim sharedMarksRegExp As String
sharedMarksRegExp = &quot;([\u0020-\u002f\u003a\u003b\u00A0\u2010\u2013\u2014]+)?&quot;
Dim newFontName As String
newFontName = &quot;IPH Astra Serif&quot;
Dim RAtts(2) as new com.sun.star.beans.PropertyValue
@ -324,7 +325,7 @@ Private Sub unicodeSymbolsConversion
RAtts(0).Value = newFontName
RAtts(1).Value = newFontName
RAtts(2).Value = newFontName
unicodeConversionEverywhere(&quot;[\u0600-\u06ff\ufb50-\ufdff\ufe70-\ufeff]+&quot;,RAtts)
unicodeConversionEverywhere(sharedMarksRegExp &amp; &quot;[\u0600-\u06ff\ufb50-\ufdff\ufe70-\ufeff]+&quot; &amp; sharedMarksRegExp ,RAtts)
&apos;Greek Tinos
newFontName = &quot;Tinos&quot;
@ -333,7 +334,7 @@ Private Sub unicodeSymbolsConversion
RAtts(2).Value = newFontName
&apos;Greek and Coptic 0370—03FF
&apos;Greek extended 1F00—1FFF
unicodeConversionEverywhere(&quot;[\u0370-\u03ff\u1f00-\u1fff]+&quot;,RAtts)
unicodeConversionEverywhere(sharedMarksRegExp &amp; &quot;[\u0370-\u03ff\u1f00-\u1fff]+&quot; &amp; sharedMarksRegExp,RAtts)
&apos;DejaVu Sans Mathematical operators
@ -354,7 +355,7 @@ Private Sub unicodeSymbolsConversion
&apos;\u21d2 двойная стрелка вправо
&apos;3000—303F Символы и пунктуация ККЯ
unicodeConversionEverywhere(&quot;[\u21d2\u302b\uff00-\uffef]+&quot;,RAtts)
unicodeConversionEverywhere(sharedMarksRegExp &amp; &quot;[\u21d2\u302b\uff00-\uffef]+&quot; &amp; sharedMarksRegExp,RAtts)
newFontName = &quot;Noto Serif CJK SC&quot;
RAtts(0).Value = newFontName
@ -364,7 +365,7 @@ Private Sub unicodeSymbolsConversion
&apos;\u4e00—\u9fff Унифицированные идеограммы ККЯ
&apos;\u3400-\u4db7\u4e00—\u9ff1 Найдены в Noto Sans CJK SC
&apos;\u3000-\u302a\u302c-\u303f В Noto Sans CJK SC
unicodeConversionEverywhere(&quot;[\u3000-\u302a\u302c-\u303f\u3400-\u4db7\u4e00-\u9ff1]+&quot;,RAtts)
unicodeConversionEverywhere(sharedMarksRegExp &amp; &quot;[\u3000-\u302a\u302c-\u303f\u3400-\u4db7\u4e00-\u9ff1]+&quot; &amp; sharedMarksRegExp,RAtts)
End Sub
@ -448,6 +449,8 @@ Private Sub fixFrequentMistakes
config = initRedactionConfiguration()
Dim NBSP As String
Dim space As String
Dim latinPlusCyrillicLettersRegExp As String
latinPlusCyrillicLettersRegExp = &quot;[\u0041-\u005a\u0061-\u007a\u0410-\u044f]&quot;
NBSP = &quot; &quot;
space = &quot; &quot;
&apos;Не должно быть символов табуляции
@ -465,18 +468,18 @@ Private Sub fixFrequentMistakes
&apos;Не должно быть пробелов после скобок [({ и кавычек «„
AskAndReplace(&quot;(?&lt;=[\(\[\{«„])[:space:]&quot;,&quot;&quot;)
&apos;Между буквами среднее тире должно обрамляться пробелами
AskAndReplace(&quot;(?&lt;=[:alpha:])(?=[:alpha:])&quot;,NBSP &amp; &quot;&quot; &amp; NBSP)
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)(?=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,NBSP &amp; &quot;&quot; &amp; NBSP)
&apos;Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире
AskAndReplace(&quot;(?&lt;=[:alpha:][:space:])[-‒—−](?=[:space:][:alpha:])&quot;,&quot;&quot;)
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;[:space:])[-‒—−](?=[:space:]&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,&quot;&quot;)
&apos;Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым.
&apos;Также проверяем, что перед искомым тире нет DOI
&apos;&apos;&apos;&apos;&apos;AskAndReplace(&quot;(?&lt;!DOI[0-9. /XVI:-‒–—−-]{1,50})(?&lt;=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])&quot;,&quot;&quot;)
&apos;Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним
AskAndReplace(&quot;(?&lt;=[MDCLXVI])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[MDCLXVI])&quot;,&quot;&quot;)
&apos;Между буквой и угловой открывающейся скобкой должен быть пробел
AskAndReplace(&quot;(?&lt;=[:alpha:])&lt;(?=…&gt;)&quot;,space &amp; &quot;&lt;&quot;)
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&lt;(?=…&gt;)&quot;,space &amp; &quot;&lt;&quot;)
&apos;Между угловой закрывающейся скобкой и буквой должен быть пробел
AskAndReplace(&quot;(?&lt;=&lt;…)&gt;(?=[:alpha:])&quot;,&quot;&gt;&quot; &amp; space)
AskAndReplace(&quot;(?&lt;=&lt;…)&gt;(?=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,&quot;&gt;&quot; &amp; space)
If config.getPropertyValue(&quot;fixes_russian_iph&quot;) = &quot;true&quot; Then
&apos;между N. Y. не должно быть пробела