2013-06-03 18 views
10

Qui ci sono già domande:Come verificare quali caratteri contengono un carattere specifico con perl?

ho molti diversi tipi di carattere. Molti di questi sono "solo ascii" e ho bisogno di verificare quali caratteri contengono diversi caratteri accentati. (Latino - codepoints Unicode - testi sono codificati come utf8) come: (áäčďéěíĺľňóôöőŕřšťúůüűýž)

sono stati principalmente:

  • font TrueType (con l'estensione .ttf)
  • collezioni TrueType (estensione .ttc)
  • font OpenType (.otf)

Qual è il solito (corretto) modo per fare questo con il perl? (è l'unica lingua che conosco un po 'e le domande di cui sopra sono per C). Chiedendo prima di iniziare a installare tutti i moduli CPAN cosa contiene "font" :).

Sono su OS X (se questo è importante, e posso installare qualsiasi pacchetto Macports - se aiuta).

+1

Dai un'occhiata alla mia risposta a [questa domanda] (http://stackoverflow.com/questions/15896493/how-can-one-find-the-unicode- codepoints-che-a-font-ha-glifi-for-on-a-debian/15905540 # 15905540). – nwellnhof

+0

@nwellnhof Sfortunatamente, non posso installare 'Font :: FreeType' su OS X. Compilando l'errore di lancio di FreeType.xs. Fortunatamente il suggerimento di @mob 'Font :: TTF' è stato installato correttamente. Grazie comunque, buono a sapersi, che qui è un'altra soluzione. – cajwine

+0

Non perl, ma per l'amor di SEO, questo script python funziona alla grande: http://unix.stackexchange.com/a/268286/26952 –

risposta

3

Per i file .ttf, è possibile utilizzare Font::TTF e dei relativi moduli:

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

mi sto pesce fuor d'acqua, ma c'è anche un modulo Font::TTF::Ttc nella distribuzione Font::TTF che si poteva frugare dentro e vedere se è possibile estrarre ulteriori informazioni sui punti di codice supportati.

(Font::TTF suggerimento è venuto da here)

+0

'Font :: TTF' è un bel modulo, ma richiede una certa comprensione del TrueType e formati OpenType. BTW, '$ font -> {cmap} -> ms_table' restituisce un hash che mappa i punti Unicode in codice con gli ID di glifo. Questo hash dovrebbe essere più facile da usare rispetto alla matrice restituita da '-> reverse'. – nwellnhof

Problemi correlati