Re: Codifica errata per la sillaba “fi”

#90436
OldClaudio
Partecipante
    Up
    0
    Down
    ::

    nedyar” post=89996

    Mi fa piacere che lmodern ti abbia risolto il problema, ma la soluzione vera sta specialmente nell’aver specificato la codifica T!, l’hai fatto vero? se non l’hia fatto e hai risolto ugualmente il tuo problema, allora sei fortunato (cioè il risultato è frutto della fortuna).

    Le legature fi ffi, fl e ffl sono presenti sia nei font CM (codificati OT1, la codifica di default e font di default), sia nel font CM-Super (codificati (T1, e usati di default quando specifichi la codifica T1), sia nei font Latin Modern (usati se specifichi l’uso di questa collezione di font sia in codifica OT1, sia in codifica T1 sia in altre codifiche). Quindi non è la questione se i font contengano quelle legature (tutti i font che ti ho indicato le contengono); dipende da come interagiscono la specifica della codifica utf8 a inputenc, con la codifica specificata all pacchetto fontenc; e dipendono dal fatto che copiando e incollando si copi e incolli anche la legatura oppure si incollino i caratteri slegati.

    Mi sa che per una volta sono stato fortunato, ho sì usato la codifica T1 ma per sfizio ho provato a commentare quella riga e il problema non si presenta più. Sicuramente è più corretto il suggerimento che mi avete dato, cioè che il problema era nella codifica, infatti d’ora in avanti continuerò ad usarlo, ma, per qualche strano motivo, non ha risolto.
    Sono arrivato a questa soluzione per caso notando che il font utilizzato con la codifica T1 era di tipo bitmap, cercando un po’ in rete ho risolto aggiungendo lmodern che casualmente ha risolto il mio problema originario. 😎

    Per carità non voglio insistere, ma guarda il file che ti allego; spero che compaia come compare da me, visto che uso font aprticolari e editor specifici; leggi i commenti e dopo \end document guarda i messaggi d’errore. Tieni presente come ho agito, puoi provare a ripetere l’esperimento compilando solo la prima riga di testo commentando le righe successive e togliendo i commenti dai pacchetti usati secondo quanto dicono le righe di commento; poi copia dal file appena prodotto l’ultima riga e ricopilala sotta alla riga appena compilata, mdifica la situazione dei pacchetti da usare, e ricompila; via avanti così; Noterai che finché uso il font Monaco nell’editor TeXshop (e potrei usare lo stesso font con TeXstudio configurando l’editor in modo adatto, così come potrei scegliere per TeXShop il font Arial–la differenza fra Monaco e Arial è che il primo e monospaziato, mentre il secondo è proporzionale; il primo non ha le legature, il secondo sì)`% !TEX TS-program = pdflatex
    % !TEX encoding = UTF-8 Unicode
    \documentclass[12pt]{article}
    \usepackage[utf8]{inputenc}
    %\usepackage[T1]{fontenc}
    %\usepackage{lmodern}
    \begin{document}

    % % % % % % % % % % % % % % % % % % % TEXSHOP % % % % % % % % % % % % % % % % % % % % % %

    % Nei quattro esempi qui sotto TeXShop usa il font monospaziato Monaco

    affine afflato difficile finale fluido

    % Ora copio dal file PDF e incollo qui sotto, avendo composto con LatinModern e T1

    affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate

    % Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con T1

    affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate

    % Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con OT1

    affine afflato difficile finale fluido %Si noti che le lettere sono state copiate slegate

    % % % % % % % % % % % % % % % % % % % % % TEXSTUDIO % % % % % % % % % % % % % % % % % %
    % Nei quattro esempi qui sotto ho usato Texstudio con il font Arial

    % Ora copio dal file PDF e incollo qui sotto, avendo composto senza LatinModern ma con OT1
    % come si vedem ho copiato da Adobe Reader le legature non compaiono nemmeno nella schemrata, ma ci sono.

    ane aato dicile nale
    uido

    I messaggi d'errore sono

    \end{document}
    I messaggi d'errore sono

    ! Package inputenc Error: Keyboard character used is undefined
    (inputenc) in inputencoding `utf8'.

    See the inputenc package documentation for explanation.
    Type H for immediate help.

    l.29 a^^N
    ne a^^Oato di^^Ncile ^^Lnale
    You need to provide a definition with \DeclareInputText
    or \DeclareInputMath before using this key.

    ! Package inputenc Error: Keyboard character used is undefined
    (inputenc) in inputencoding `utf8'.

    See the inputenc package documentation for explanation.
    Type H for immediate help.

    l.29 a^^Nne a^^O
    ato di^^Ncile ^^Lnale
    You need to provide a definition with \DeclareInputText
    or \DeclareInputMath before using this key.

    ! Package inputenc Error: Keyboard character used is undefined
    (inputenc) in inputencoding `utf8'.

    See the inputenc package documentation for explanation.
    Type H for immediate help.

    l.29 a^^Nne a^^Oato di^^N
    cile ^^Lnale
    You need to provide a definition with \DeclareInputText
    or \DeclareInputMath before using this key.
    `Hai seguito i messaggi d’errore? Il file è sempre lo stesso, quello che si copia lo si incolia nella finestra dell’editor configurato per usare font diversi; e il risultato è diverso.

    Ripeto quindi quello che ho detto; le legature nel file d’entrata .tex NON devono essere presenti; le lettere accentate non sono legature, sono semplici glifi; le legature che si producono nel font di uscita sono il risultato delle proprietà del font; se le copi e incolli in un altro file sorgente, sempre codificato utf8, quei particolari glifi non sono presi in considerazione né da \inputenc con l’opzione utf8, nè da fontenc con l’opzione T1, Sembra che il pacchetto cmap possa mettere a posto le cose, ma è certo che usando font Type 1 a 256 glifi, i glifi delle legature hanno indirizzi numerici inferiori a 32 (il codice dello spazio) e non hanno quindi un indirizzo unicode valido. Usando i nomi dei glifi, invece che gli indirizzi numerici, è possibile superare questa “incongruenza” e cmap svolge questo delicato incarico di rimappare gli indirizzi ai nomi.

    Sempre per approfondire, ma ritenendo il tuo problema risolto per scienza o per fortuna, dai un’occhiata alla guida tematica sui font; la figura 1.1 rappresenta la tabella dei fon codificati OT1, e vedi che le legature della lettera f sono tutte nella prima riga della tabella verso destra con indirizzi esadecimali che vanno da “0B a “0F; i font in codifica T sono rappresentati nella tabella 1.3, dove le legature della lettera f sono alla fine della seconda riga con indirizzi esadecimali che vanno da “1B a “1F; questi indirizzi esadecimali inferiori a “20 sono tutti vuoti nella tabella unicode (che non è riportata perché conterrebbe centinai di miglia di glifi); la prima pagina unicode negli indirizzi da “20 a “FF contiene i caratteri ASCII’, invece nelle prime 32 posizioni, da “00 a “1F, la tabella ASCII contiene i caratteri di controllo per le trasmissioni in telescrivente (ormai quasi del tutto abbandonate) e quelle posizioni nella tabella UNICODE sono vuote. Ecco perché i messaggi d;errore fanno riferimento a caratteri indicati, per esempio, con ^^N, che vuol dire “l’indirizzo di N diminuito di “20 esadecimale: se guardi la tabella l’indirizzo esadecimale di N, esso è “4E e se gli togli “20, ottieni “1e, cioè l’indirizzo della legatura ffi. A me la cosa non disturba più di tanto, nel senso che l’ho capita e l’ho usata a mio beneficio tante volte, ma capisco che sia un problema per chi non si occupa degli indirizzi dei glifi; e non dovrebbe preoccupare affatto perché le tabelle t1enc.def e t1enc.dfu dovrebbero essere fatte diversamente, ma purtroppo questo è quanto ci lega al passato quando in font Type1 non esistevano e meno che mai esisteva la codifica UNICODE, ma TeX e LaTeX esistevano già.

    Go to top