LibreOffice: Lücken im Wort nach PDF-Export

Ich benutze LibreOffice (LO) Version: 7.4.2.3 für Linux und schreibe gerade einen langen Text, ein Buch mit etwa 250 Seiten. Es wird viel ergänzt, eingeschoben oder gekürzt. Automatisch gesetzte Trennstellen der Silbentrennung in Worten rutschen über die Zeilenenden hin und her, dabei verschwinden sie und erscheinen neu. Am Textbild bemerkt man fast nichts ungewohntes. Als Optionen für die Ansicht habe ich die Formatierungszeichen nicht angeschaltet (die würden hier auch nicht helfen) und die Feldhinterlegungen zunächst auch nicht.

Nach dem Export als PDF erscheinen aber an sehr vielen Stellen plötzlich kurze Lücken mitten im Wort, kleiner als normale Leerzeichen – offenbar genau an solchen Trennstellen, die nun keine Silbentrennung mehr darstellen. Je länger ich am Text gearbeitet habe, um so mehr werden es. Bei genauem Hinsehen erkennt man die Stellen auch im Text in LO als ganz schmale Lücke. Überfährt man sie mit der Tastatur, muss man mit der Cursortaste dort zweimal drücken – da ist also „irgendwas“! Man kann „es“ aber nicht einzeln markieren.

Ich habe mir Hilfe im deutschsprachigen LibreOffice-Forum gesucht und einen Thread eröffnet. Einen Tag später hatte ich genug Hinweise und eine praktikable Lösung [1], die ich hier kurz beschreiben möchte. Nach meiner Meinung ist es ein Fehler in LibreOffice beim Export eines Textes (nur bei ODT?) nach PDF, den ich mit dem Workaround nicht beheben, aber umgehen kann.

Also: Im PDF sieht man im fraglichen Wort eine ganz schmale Lücke, die man beim flüchtigen Lesen übersieht. Man schaltet in LO die Ansicht / Feldhinterlegungen ein und öffnet das Dokument. In dem Wort sieht man nun grau hinterlegt einen kurzen Bindestrich ohne Lücken an den Seiten. Das ist eine Stelle, an der die Silbentrennung schon mal gewirkt hat, bevor sie durch Umformatierungen wieder zurückgenommen wurde – das erspart LO anscheinend den erneuten Blick in sein Regelwerk beim nächsten Einlesen und damit Ladezeit. Das hat Sinn.

Keinen Sinn hat es, dass diese unsichtbaren Stellen im PDF als Lücke dargestellt werden – das ist ein Fehler von LO beim PDF-Export! Getestet habe ich das mit Adobe Reader und Evince, es ist also kein Fehler der PDF-Reader. Das fragliche Zeichen ist hexadezimales 0xAD, wie ich mit einem Programmier-Editor gefunden habe, und das müsste beim Export einfach übergangen werden.

Wie umgeht man nun den Fehler? Eigentlich ist es ja keiner im Dokument, denn das sollte die sinnvollen Steuerzeichen ruhig enthalten dürfen.

Da man das Zeichen 0xAD nicht eingeben kann, muss man es in einem Wort isolieren und dann im gesamten Dokument gegen „nichts“ ersetzen. Man muss also eine Fundstelle im PDF finden und diese dann auch im ODT suchen. Nehmen wir an, man findet das Wort „Dampf=walze“ – das = soll hier die beschriebene Trennstelle darstellen. Man kopiert das ganze Wort mit Strg-C in die Zwischenablage, ruft „Bearbeiten / Suchen und Ersetzen“ auf und kopiert mit Strg-V das Wort mitsamt der Trennstelle in das „Suchen“-Feld. Die Trennstelle ist hier wirklich unsichtbar – nicht beirren lassen! Jetzt wird es ernst:

Man löscht in diesem Wort von links mit ENTF die Buchstaben bis zu genau dem Zeichen vor der unsichtbaren Trennstelle („Dampf“), von rechts mit <– (löschen) bis zum Zeichen genau nach der Trennstelle („walze“). In diesem Feld steht nun nichts sichtbares mehr, man kann auch den Cursor nicht bewegen – aber alles ist gut, da ist noch was! Im Ersetzen-Feld trägt man nichts ein, wirklich leer, kein Leerzeichen, und startet „alle ersetzen“. Schwupps, sind alle 1027 Fundstellen bereinigt! Das heißt, man möge VORHER eine Kopie anlegen, falls etwas schiefgeht…

Zur Kontrolle kann man nun wieder ein PDF mit neuem Namen (um vergleichen zu können) exportieren, darin dürften alle diese Fehler verschwunden sein.

Ich würde mich sehr über Kommentare freuen, vielleicht hat noch jemand Erklärungen oder andere Hinweise zur Lösung des Problems?


[1] https://www.libreoffice-forum.de/viewtopic.php?f=5&t=38316
Vielen Dank an die Freunde im Forum, die mir so toll geholfen haben!

Abmahn-Falle reCaptcha

Wer freut sich nicht darüber, auf Websites mit Formularen immer wieder Bilderrätsel lösen zu müssen, die oft kaum erkennbar sind oder falsch ausgewertet werden, oder seine Lese- und Rechenkünste der 1. Klasse unter Beweis stellen zu müssen. Die Rede ist von sogenannten Captchas [1]. Sie dienen dazu, Maschinen – also Programmen – das automatische Ausfüllen von Formularen zumindest so zu erschweren, dass davon abgesehen wird. Damit soll in der Regel die Flut von Spam-Kommentaren verhindert werden.

Besonders bekannt sind die Captchas von Google. So ausgeklügelt die heute auch sind und wie gut sie auch ihren Zweck erfüllen, so haben si doch einen entscheidenden Nachteil. Neben ihrer Hauptaufgabe aus Nutzersicht schicken sie jedoch im Hintergrund eine Menge zwar anonyme, aber persönliche Daten zu Google. Neben den technisch notwendigen wie den IP-Adressen, werden Orte, Browser, Plugins, Mausbewegungen… gesammelt und statistisch ausgewertet. Das ist der eigentliche Gewinn für Google, alles andere ist nur Werkzeug. Eigentlich eine Win-Win-Situation, aber eben ein Dorn im Auge der Datenschützer.

Worum es hierbei im Detail geht und warum das aus Sicht der Datenschützer problematisch ist, wird hier [2] gut beschrieben, das muss ich hier nicht nochmal machen.

Um das Problem generell zu umgehen, bietet sich die Nutzung grundsätzlich anderer Konzepte als die diversen Captcha-Lösungen, insbesondere der von Google, an. Mein Favorit ist der „Honigtopf“, ein altbekanntes Mittel, um Fliegen und andere schädliche Insekten anzulocken und unschädlich zu machen. Für unsere Zwecke heißt das tatsächlich „Honeypot“ und beschreibt eine Programmiertechnik innerhalb einer Website, lüsterne Bots (spezielle Suchmaschinen) auf die falsche Fährte zu locken und damit unschädlich zu machen.

Für WordPress gibt es eine Reihe von Plugins, die das realisieren. Welches geeignet ist, hängt ab von anderen verwendeten Techniken, z. B. von benutzten Formular-Plugins wie CF7 oder WPForms. Manches kann man gut kombinieren, z. B. „Honeypot for CF7“ und „Blackhole for Bad Bots“. Man suche einfach mal Plugins mit „Honeypot“ und es finden sich einige, die man probieren kann.

Hat man das erledigt, kann in der Datenschutz-Erklärung der Abschnitt zu Captchas ersatzlos gestrichen werden, der sonst wegen der ungewollten Datenübertragung nach Übersee nicht fehlen dürfte.


[1] https://de.wikipedia.org/wiki/Captcha
[2] https://www.dr-datenschutz.de/google-recaptcha-und-der-datenschutz/

Abmahn-Falle Google Fonts

Es scheint wieder eine neue Abmahnwelle anzurollen. Sie ist nicht neu, aber besonders hinterhältig. Der Hintergrund ist, dass Google eine riesige Menge Schriften (Fonts) zur kostenlosen Verwendung anbietet, indem sie einfach in der eigenen Website verlinkt und beim Laden der Seiten online bezogen werden. Dabei werden – so funktioniert eben das Internet! – neben der eigenen IP-Adresse auch einige anonyme Daten des Browsers zu Google übertragen. Das stößt den Anwälten unter den Datenschützern (Stichwort: DSGVO, Datenschutz-Grundverordnung) auf und sie wittern Profit. Denn dieser Datenübertragung stimmt der Nutzer in der Regel nicht bewusst zu. Was für ein Irrsinn! Es werden dann Abmahnungen im niedrigen dreistelligen Bereich verschickt, die meist schnell bezahlt werden, weil sich ein Rechtsstreit deswegen nicht lohnt. Das bei 1000 „Klienten“ ergibt ein hübsches Sümmchen.

Insbesondere bei Websites mit WordPress, bei deren verwendetem Theme die verwendete Schrift (Font) von Google oft fest einprogrammiert ist, ist das unter Umständen schwer zu beheben. Es gibt Plugins, die sowas beheben sollen, was aber aus meiner Erfahrung nicht geht und sogar in einer „weißen Seite“ enden kann.

Ist die Website vorhanden – egal ob konventionell oder z.B. WordPress -, muss man zunächst herausfinden, welche Google-Fonts verwendet und tatsächlich online bezogen werden. Nur um diese geht es in diesem Zusammenhang, alle anderen Techniken werden jetzt nicht betrachtet. Das lässt sich zum Beispiel mit diesem Tool machen:

[1] https://fonts-check.de/

Gibt es „schädliche“ Fonts, werden die aufgelistet. Oft erscheinen dort mehrere Versionen, also Dateiformate – entscheidend ist nur der darinsteckende Name, z.B. „Roboto“. Erscheint nichts, ist alles gut.

Konventionelle Website

Hat man eine konventionelle Website, die man selbst geschrieben hat, stehen die Aufrufe der Google-Fonts im Head-Bereich in einer Form wie

<link href=“https://fonts.googleapis.com/css?family=Roboto’ rel=’stylesheet“>

Diese Zeilen werden auf allen Seiten gelöscht. Stattdessen wird in die normalerweise immer vorhandene zentrale CSS-Datei der Code eingefügt, den man sich mit dem Tool

[2] Google Webfonts Helper (google-webfonts-helper.herokuapp.com/fonts)

(leider nur in Englisch verfügbar!) komfortabel zurechtmachen lassen kann. Dabei kommen solche recht komplexen Styles heraus, die man dann den entsprechenden Selektoren (auch *) zuweisen kann:

* {
    @font-face {
      font-family: 'Roboto';
      font-style: normal;
      font-weight: 400;
           url('../fonts/roboto-v30-latin-regular.woff2') format('woff2'),
           url('../fonts/roboto-v30-latin-regular.woff') format('woff'),
           url('../fonts/roboto-v30-latin-regular.ttf') format('truetype'),
           url('../fonts/roboto-v30-latin-regular.svg#Roboto') format('svg');
    }
}

Die Zeilen für den IE 8/9 habe ich gleich weggelassen, die braucht keiner mehr.

Website mit WordPress

Hier gibt es mehrere Möglichkeiten. Die einfachste ist, dass das verwendete Theme das „Verstecken“ benutzter Google-Fonts gleich selbst mitbringt oder gar keine verwendet.

Etwas aufwändige kann es werden, wenn es welche verwendet, die aber fest im Theme kodiert sind. Dann kann man nur versuchen, das Verstecken mit einem geeigenten Plugin zu bewerkstelligen wie zum Beispiel „OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy.“ (OMGF) oder „Local Google Fonts“. Man kann auch versuchen, die Verwendung ganz abzuschalten, z.B. mit dem Plugin „Disable and Remove Google Fonts“. All das muss nicht funktionieren und kann schlimmstenfalls dazu führen, dass beim Neuladen des Backends oder der Website selbst nichts mehr erscheint außer einer wenig sagenden Fehlermeldung: Dann hilf nur der beherzte Zugriff über FTP auf /wp-content/plugins und das Löschen des Verzeichnisses <plugin-name>, den man sich hoffentlich gemerkt hat… (es empfiehlt sich also ein vorheriger Blick dorthin, um den Namen zu kennen).

Fazit

Auch wenn die Abmahner für diesen unsinnigen Lapsus „nur“ etwa 300 € haben wollen, sollte man die Sache rechtzeitig beheben. Manchmal sind die Fonts überflüssig, weil sie gar keinen Gewinn gegenüber Standardschriften bringen, aber Ladezeit bewirken. Möchte man sie wegen der Ästethik haben, lohnt sich der Aufwand. Übrigens auch dann, wenn ihr Websites für Kunden macht: Man wird das Engagement loben und die 300 € lieber euch geben statt den Anwälten.


Ich bitte um Ergänzungen in euren Kommentaren! Ich werde aber kaum für alle möglichen Fälle wie exotische CMS oder E-Commerce-Sites Empfehlungen zusammentragen, dazu ist das Thema einfach zu vielfältig.

Thunderbird: Aktivierung von eigenem CSS-Code

Mancheiner bemüht sich vergeblich, eigenen Code in Thunderbird’s userChrome.css und userContent.css unterzubringen und verzweifelt daran, dass das einfach nicht wirkt. Man muss Thunderbird zuvor sagen, dass das auch benutzt werden darf und soll! Ob das eine Sicherheitsmaßnahme ist, sei dahingestellt. Also:

Entweder baut man direkt in prefs.js folgendes ein – was ich wegen der Fehleranfälligkeit sehr ungern tue:

 user_pref("toolkit.legacyUserProfileCustomizations.stylesheets",true);

Oder man geht in Thunderbird in „Einstellungen/Allgemein“ nach ganz unten zu „Konfiguration bearbeiten, gibt dort den Schlüssel

toolkit.legacyUserProfileCustomizations.stylesheets

ein und setzt ihn auf true. Er steht standardmäßig auf false.

Voilá.

Android: Probleme mit Fritz!App Fon

Meine Situation

Ich betreibe eine Fritz!Box 6490 Cable (Vodafone) mit OS 7.29 und ein Smartphon Xiaomi Redmi Note 9 mit MIU 12.5.3 als Betriebssystem. Als App habe ich derzeit die Version 2.6.1 vom 30.6.2022.

Wenn ich die Fritz!App Fon einfach nur nach Vorgabe installiere – was ja in 3 Minuten erledigt zu sein scheint -, funktioniert sie bei weitem nicht zuverlässig. Nach kurzer Zeit meldet sie sich beim manuellen Aufruf mit „nicht aktiv“ und sie ist es tatsächlich auch nicht: Kommt ein Anruf auf einer der eingestellten Nummern, klingelt es zwar, aber die App „geht nicht ran“, das Telefon wacht nicht auf, die Oberfläche der App ist nicht sichtbar und wenn man das Telefon entsperrt, sieht man nur „unbekannte Nummer“.

Ich habe lange experimentiert, bis ich nun eine mögliche Lösung gefunden habe. Nach meiner Erinnerung hat das alles schon funktioniert, ich vermute aber, AVM hat die App in den letzten Monaten kaputt-verbessert. Nach [1] sind allein 2022 bis jetzt (September) 5 Updates veröffentlicht worden! Das spricht nicht unbedingt für zielstrebige und schere Entwicklung – da kann man schon mal einiges kaputt machen, was schon ging…

Vorläufige Lösung

Bei Android 11 oder besser gesagt MIUI muss sich auch der Laie um die Vergabe der Rechte und Benachrichtigungen selbst kümmern. Damit ist er eigentlich überfordert!

Für unser Problem sind wirklich alle verfügbaren Berechtigungen zuzulassen(einzige Ausnahme: „WLAN ändern“). Insbesondere auch die für „Telefon“: Ich vermute, die App nutzt die Telefonsoftware des Systems als Frontend, und wenn sie das nicht darf, dann kommt eben beim Anruf keine Oberfläche. Unter „sonstige Berechtigungen“ sind alle roten Kreuze durch antippen in grüne Haken zu verwandeln.

„Autostart“ braucht man nicht anzuschalten – der funktioniert nicht; man muss die App unbedingt einmal nach jedem Neustart des Gerätes von Hand starten, sonst verliert sie nach einer Weile die Verbindung zur Fritz!Box.

Zum Schluss nicht vergessen, den Schalter auf AUS zu stellen, der die Berechtigungen nach einer Weile der Nicht-Nutzung wieder wegnimmt.

Außerdem muss die App unbedingt vom Stromsparen ausgenommen werden, was nicht der „Empfehlung“ entspricht – sonst lebt sie eben nach einer Weile nicht mehr (vollständig) und reagiert zu spät oder gar nicht.

Den Benachrichtigungston – falls man einen haben will, der zusammen mit Festnetztelefonen noch mehr Lärm macht – muss man bei „Einstellungen / Apps / Apps verwalten / Fritz!App Fon / Benachrichtigungen / ankommender Anruf“ festlegen, nicht in der App selbst. Das ist eine Vorgabe von Google.


Es ist traurig, dass AVM das nicht besser gelöst hat. Gut, es entspricht den Vorgaben von Google, alles so „sicher“ wie möglich zu machen, aber es lässt die App eben leider nicht richtig funktionieren. Hinweise in der Bedienungsanleitung und eine eine entsprechende Verlinkung dorthin innerhalb der App sollten doch möglich sein!

Ich bitte zu berücksichtigen, dass ich meine Lösung nur so beschreiben kann, wie ich sie mit meiner Ausrüstung sehen kann. Ich bin mir bewusst, dass es Abweichungen je nach Fritz!Box, Smartphon und Betriebssystemen gibt, die ich freilich nicht kenne. Ich bitte daher ausdrücklich um Kommentare!

[1] fritz-app-fon.de.uptodown.com/android/versions

RustDesk: Die alternative Fernwartung

Lange habe ich zunächst TeamViewer, dann AnyDesk zur Fernwartung von entfernten Rechnern benutzt.

Teamviewer ist kommerziell und kostet richtig Geld, die private – das heißt auch sehr gelegentliche Nutzung – funktioniert immer nur kurz: Nach ein paar Minuten wird die Verbindung gekappt. Damit hat Fernwartung natürlich keinen Sinn und der hohe Preis ist bei seltener Benutzung nicht gerechtfertigt.

Dann habe ich AnyDesk ausprobiert. Bei mir lief Linux (Xubuntu) 20.04, da ging das problemlos. Das ist ein sehr schönes leistungsfähiges Programm mit nur unwesentlichen Einschränkungen bei kostenloser Nutzung. Aber dann habe ich einen neuen Rechner mit Xubuntu 22.04 aufgesetzt (also kein Upgrade), wodurch anscheinend irgendwelche Abhängigkeiten nicht erfüllt waren und ich habe AnyDesk nicht mehr zum Laufen gebracht (wie hier berichtet auf dieser Website).

RustDesk

Beim Versuch, eine Lösung zu finden, bin ich dann auf RustDesk gebracht worden (Danke voxxell99 und von.wert im Forum forum.ubuntuusers.de) . Das habe ich nun probiert und ich werde wohl dabei bleiben. Die Installation ist nach dem Download in 2 Minuten erledigt, es gibt nichts zu konfigurieren außer vielleicht ein dauerhaftes Passwort. Das kann man einem neuen Gegenüber auch „mal eben“ am Telefon erzählen.

Wichtig ist ein Hinweis, wenn das Programm zur Wartung eine PC ohne Monitor (Server) benutzt werden soll. Dafür ist es erforderlich, dass man sich einen HDMI-Emulator besorgt – eine Anschaffung unter 5 € in Form eines HDMI-Steckers „mit etwas dran“. Ansonst gibt es die Meldung „Kein Display“ und es kommt keine Verbindung zustande.

RustDesk ist Open Source Software und für jedes denkbare System verfügbar.

Freie öffentliche DNS-Server

Es hat Sinn, die vom jeweiligen Internet-Zugangs-Provider vorgegebenen DNS-Server nicht zu nutzen und durch andere zu ersetzen. Jeder Zugangsprovider hat ein „betriebsbedingtes Interesse“ daran, die Zugriffe der Nutzer zu protokollieren und auszuwerten. Zum Einen möchte man das vielleicht nicht unterstützen, zum Anderen dauert das eine gewisse Zeit, die sich in der höheren Antwortzeit niederschlägt – der Zugriff auf Websites mit vielen Komponenten wird merklich langsamer.

Wobei „merklich“ natürlich im Bereich unter einer Sekunde liegt, aber Unterschiede von vielleicht 20 ms pro Zugriff summieren sich schnell.

Hier ist ein Link zu einer von vielen Seiten, die ständig aktualisiert wird und solche freien öffentlichen Adressen auflistet:

Free and Public DNS Servers

Bleibt noch die Frage, welcher der schnellste DNS-Server ist. Diese Frage kann nicht einfach so beantwortet werden, da die Messergebnisse von der Auslastung, der Tageszeit, dem Ort uvm. abhängen. Da muss man probieren oder auch mal das Programm namebench (Linux, hier erwähnt) laufen lassen. Eine Übersicht geben diese Seiten hier:

DNS-Server schnell und sicher: Cloudflare 1.1.1.1 und andere
DNS-Server aus Deutschland

Alternative DNS-Server für mehr Tempo beim Surfen

Zu erwähnen wäre noch, dass es meist kein Hindernis ist, dass in den Routern der Netzwerkanbieter deren eigener DNS-Server unveränderbar einprogrammiert ist. Entscheidend ist, dass das Betriebssystem meines Computers oder Smartphones in den eigenen Einstellungen die Daten des von mir gewünschten Servers stehen!