Seite 1 von 1

fontforge Emoji encoding & farbige Glyphen

Verfasst: Montag 21. Dezember 2020, 21:55
von MupfSpace
Hallo,

Ich möchte mit Python und fontforge eine .ttf Font erstellen, welche auch Emojis enthält…
Meine Glyphen sind .svg Dateien welche eine Auflösung von 512x512 Pixeln haben.

Ich habe folgendes Ausprobiert:

Code: Alles auswählen

import fontforge
blank = fontforge.font()
blank.save("blank.sfd") 
font = fontforge.open("blank.sfd")
glyph = font.createMappedChar("\U0000263A")
glyph.importOutlines("263A.svg")
font.generate("font.ttf")
Allerdings bekomme ich dann folgenden Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/adrian/dev/font/glyphs/test.py", line 5, in <module>
    glyph = font.createMappedChar("\U0000263A")
ValueError: Glyph name, ☺️, not in current encoding
Ich habe in der blank.sfd nachgesehen und dort gibt es eine Zeile "Encoding: ISO8859-1".
Ich habe versucht " ISO8859-1" mit "UTF-8" oder "unicode" zu ersetzen, bekomme dann aber den folgenden Fehler:

Code: Alles auswählen

Internal Error: SFD file specifies too few slots for its encoding.
Wie kann ich das beheben?

Ich habe erstmal probiert das Emoji für den Buchstaben "A" zu verwenden.
Die Font wird auch erstellt und es Funktioniert…
Allerdings ist es nur ein schwarzer Kreis, und Augen, Mund,… sind nicht zu erkennen, weil sie ebenfalls schwarz sind.
In der blank.sfd Datei steht etwas von Layern:

Code: Alles auswählen

Layer: 0 0 "Back" 1
Layer: 1 0 "Fore" 0
Ich glaube, dass ich es da eintragen muss, welche Farben ich brauche, aber ich weiß nicht wie und wie ich festlege, welcher teil in der Glyphe welchem Layer zu geordnet ist.
Das Programm, das ich verwende, um die Glyphen zu erstellen heißt übrigens Inkscape.

Wie kann ich diese beiden Probleme lösen?