Japanische Fonts in EPUBs

Ich hab versucht die „Guide to Japanese Grammar“ mit Calibre in ein EBook zu konvertieren, was prinzipiell auch funktioniert hat.

Es stellte sich jedoch heraus, dass der mein Sony PRS-T1 Reader nur Sparfonts installiert hat (und man ohne rooten auch keine anderen installieren kann).

EPubs ermöglichen aber das Einbetten von Fonts, die japanische Schriftzeichen unterstützen. Solche Fonts werden CJK-Fonts genannt (Chinese, Japanese, Korean). Eine freie Version ist der „Droid Sans Fallback“-Font, der so ziemlich komplett Unicode unterstüzt.

Hier eine kleine Anleitung, wie man den Font in ein EBook reinbekommt.

  1. das EPUB mit Calibre auswählen und „Tweak EPUB“ wählen.
    Calibre extrahiert dann das EPUB in ein Verzeichnis und zeigt es an.
  2. die DroidSansFallback.ttf in das Verzeichnis kopieren
  3. stylesheet.css öffnen und ganz oben hinzufügen:
    @font-face{font-family:"Droid Sans Fallback";font-style:normal;font-weight:normal;src:url(DroidSansFallback.ttf)}
    
    body {
     font-family: "Droid Sans Fallback";
    }
  4. Calibre das EPUB wieder zusammenbauen lassen.
  5. voila

Natürlich ist hierbei zu beachten, dass es so einfach nur geht, wenn es in dem EPUB garkeinen Font gibt. Wenn es irgendwo Styles mit font-family:“…“ gibt, müssen die Styles entfernt oder geändert werden.

Viel Glück damit!

IBUS, Scim, Anthy … Hiragana Eingabe

Ein Ding der Unmöglichkeit … Ein simples virtuelles Keyboard für die Eingabe von Hiragana-Zeichen unter Linux (Kubuntu).

Nach 3 Stunden installieren, deinstallieren, reinstallieren usw usf wollte ich schon entnervt aufgeben, weil man zB IBUS installieren kann, man kann aber keine Input Method auswählen. Alles brav installiert und funktioniert (eigentlich), aber daran scheitert es.

Nach ewigem googeln bin ich auf diese Seite hier gestoßen:
https://bbs.archlinux.org/viewtopic.php?id=114937

Er hatte das gleiche Problem, er hat aber einen workaround gefunden. Einfach mit den Cursor-Tasten versuchen irgendwas auszuwählen und tatsächlich … Es erschien „Anthy“ als Auswahl, das wurde auch brav gespeichert und nach dem nächsten Login hat mittels STRG+Space die Hiragana Eingabe funktioniert.

Wie mich Linux manchmal ankotzt …

ITunes ist unbrauchbar

Das ist ja wohl das dümmste Programm, mit dem ich jemals zu tun hatte …

Ich hab mich gerade mit der PC-Version rumgeärgert und wollte den AppStore nach Japanisch-Learn-Software durchsuchen.

In meiner jugendlichen Naivität hab ich „japanese“ in das Suchfeld getippt und geglaubt, ich würde die Suchergebnisse nach Attributen wie Preis oder Rating sortieren können.

Weit gefehlt … Man kann die Anzeige nicht ändern. Man kann nicht sortieren, man sieht das Rating nicht, man kann nichts filtern, man kann NICHTS.

Ich bin gezwungen mit meinem iPad nach Apps zu suchen, weil dort wenigstens Ratings angezeigt werden.

Soviel zum Theme, Apple-Produkte sind so einfach und so durchdacht und bedienerfreundlich …

Japanisch lernen

Ich hatte in meinem Studium schon ein Semester Japanisch. Aufgrund einer anderen Prüfung bin ich zum Niveau A1 Test aber nicht angetreten. Seitdem hätte ich immer wieder gerne japanisch weitergelernt (oder neu angefangen).

Die Kurse hier kosten um die 250EUR/Jahr, das sind um die 10,50EUR/h. Da muss man sich überlegen, ob es wirklich sinnvoll ist und ob man es ersthaft betreiben möchte.

Ich bin aus Interesse auch mal auf der Wikipedia-Seite zur japanischen Sprache gewesen und hab mich dort mal umgeschaut. Auf der Seite war ganz unten ein Link zu einem „Lear Japanese From Scratch“ Blog mit Youtube-Videos.

Es erscheint merkwürdig, dass man eine ausländische Sprache mit einer anderen ausländischen Sprache erlernen muss, aber leider hab ich bisher noch keine guten deutschsprachigen und kostenlosen online-Lernkurse gefunden. Außerdem darf Englisch eigentlich keine Fremdsprache mehr sein 🙂

Ich werd mal versuchen, meine schon lang vergessenen japanisch Kenntnisse wieder aufzufrischen und vlt auch mal was neues dazuzulernen. Nach einem Semester japanisch hat man eigentlich eh noch nicht wirklich viel mehr gelernt außer watashi wa Thomas desu und bis 300 zu zählen 🙂

 

Comet für GWT Evaluierung

Für eine Web-Application hab ich verschiedene Comet-Implementierungen für GWT ausprobiert.

Am tauglichsten stellte sich zunächst GWT-Comet heraus, das verschiedene Implementierungen für verschiedene Browser implementiert hat. Für IE-Browser hidden I-Frames, für Webkit-Browser EventSource usw …

Leider stellte sich heraus, dass es Probleme mit Opera-Browsern der Versionen 10.6 bis 11.5. Weiterhin funktioniert GWT-Comet nicht direkt mit dem IE9. Für zweiteres Problem gibt es einen Patch (der aber nicht in die Mainline aufgenommen wurde). Für erstes Problem hieß es:“Beim Opera-Browser wurde was kaputtprogrammiert und da gibts keine Lösung dafür“. In der tat hat sich das Problem ab Version 11.6 auch wieder von selbst behoben.

Aufgrund dieser Probleme habe ich mich nach Alternativen umgesehen und bin über ein Tutorial gestolpert, das „Gwt + Grizzly + Comet“ hieß. Der Verfasser hatte Teile vom RPC-Mechanismus von GWT nachgebaut und es „SimpleServlet“ genannt. Ich hab mir das angeschaut und es hat mir nicht gefallen. Er hat ja wirklich den ganzen Teil mit der Serialisierungspolicy übernommen … Kam mir etwas sehr redundant, nicht gepflegt und veraltet vor.

Was hab ich jetzt gemacht?

Ich hab ein simples HTTP-Long-Polling selbst implementiert. Im Prinzip läuft das so, dass der Client eine Anfrage an den Server stellt, dieser einfach nicht antwortet. Bevor ein TCP-Timeout stattfindet, schickt er aber eine Antwort an den Client, worauf anschließend die Connection geschlossen wird. Der Client bekommt seine Antwort, ist zufrieden und stellt die Verbindung gleich wieder her. Muss eine Message an den Client gepushed werden, während der Client wartet, kriegt er (natürlich) sofort seine Antwort. Anschließend wird die Connection geschlossen und der Client muss die Verbindung neu aufbauen.

Dies ist nicht so elegant, wie die ganzen Streaming-Methoden, ist aber einfacher zu implementieren und funktioniert mit Sicherheit mit jedem Browser.

Ein paar Dinge muss man aber dafür in Kauf nehmen:
– es gibt das Verbindungslimit für Browser, nach dem jeder Browser nur maximal 2 Verbindungen mit einer subdomain (nicht host!) aufbauen kann. Eine dieser Verbindungen ist schon belegt, d.h. statischen Content wie Bilder sollte man über eine andere Subdomain ausliefern.
– Mit dem Standard RPC-Mechanismus von GWT und den Cross-Domain-Beschränkungen kann der Long-Polling-Channel nicht (zuverlässig!) auf eine andere Subdomain gelegt werden. Manche Browser würden das gestatten, die meisten aber nicht.
– Long-Polling kann dazu führen, dass es so aussieht, als würde der Browser nie mit dem Laden fertig werden. Dies kann z.B. an einem Text „loading …“ oder einem Spinner erkennbar sein. Eventuell wirkt das irritierend.

Trotzdem scheint mir die Long-Polling-Lösung erstmal die allgemein besser unterstützte Lösung zu sein. Sie lässt sich mit GWT-Mittel ohne zusätzliche Libraries oder Änderungen direkt umsetzen und funktioniert garantiert.