2013-06-03 3 views
10

sind hier bereits Fragen:Wie überprüft man, welche Schriften mit Perl ein bestimmtes Zeichen enthalten?

ich viele verschiedene Schriftarten haben. Viele von ihnen sind "nur ascii", und ich muss überprüfen, welche Schriftarten mehrere Akzentbuchstaben enthält. (Lateinisch - Unicode-Codepoints - Texte werden als UTF-8 codiert) wie: (áäčďéěíĺľňóôöőŕřšťúůüűýž)

hauptsächlich haben:

  • Truetype-Schriftarten (mit der Endung .ttf)
  • Truetype-Sammlungen (Erweiterung .ttc)
  • Opentype-Schriftarten (OTF)

Was ist der üblicher (richtige) Weg, dies mit perl zu tun? (es ist die einzige Sprache, die ich ein bisschen weiß und die obigen Fragen sind für C). Fragen, bevor ich anfange, alle CPAN-Module zu installieren, was "Schriftart" enthält :).

Ich bin auf OS X (wenn das wichtig ist, und kann jedes Macports-Paket installieren - wenn es hilft).

+1

Werfen Sie einen Blick auf meine Antwort auf [diese Frage] (http://stackoverflow.com/questions/15896493/how-can-one-find-the-unicode- Codepoints-that-a-font-hat-Glyphs-for-on-a-debian/15905540 # 15905540). – nwellnhof

+0

@nwellnhof Leider kann ich 'Font :: FreeType' nicht unter OS X installieren. Kompilieren des FreeType.xs Wurffehlers. Glücklicherweise wurde der @mob Vorschlag 'Font :: TTF' sauber installiert. Danke trotzdem, gut zu wissen, als hier ist eine andere Lösung. – cajwine

+0

Nicht perl, aber für SEO Willen, dieses Python-Skript funktioniert super: http://unix.stackexchange.com/a/268286/26952 –

Antwort

3

Für .ttf-Dateien können Sie Font::TTF und zugehörige Module verwenden:

use Font::TTF::Font; 
my $font = Font::TTF::Font->open("C:/Windows/Fonts/ariali.ttf"); 
my @supported_codepoints = sort { $a <=> $b } $font->{cmap}->reverse; 

Ich bin aus meiner Tiefe bekommen, aber es gibt auch einen Font::TTF::Ttc Modul in der Font::TTF Verteilung, die Sie schnüffeln konnten in und Überprüfen Sie, ob Sie weitere Informationen zu unterstützten Codepunkten extrahieren können.

(Font::TTF Vorschlag kam von here)

+0

'Font :: TTF' ist ein schönes Modul, aber es erfordert ein gewisses Verständnis des TrueType und OpenType-Formate. BTW, '$ font -> {cmap} -> ms_table' gibt einen Hash zurück, der Unicode-Codepunkte auf Glyph-IDs abbildet. Dieser Hash sollte einfacher zu verwenden sein als das von '-> reverse' zurückgegebene Array. – nwellnhof

Verwandte Themen