Re: Scalare Latin Modern Typewriter Proportional

#99143
OldClaudio
Partecipante
    Up
    0
    Down
    ::

    samiel” post=98693Eh, so che con Xelatex certe operazioni sono assai semplici.
    Ma un Latin Modern possibile che non si possa scalare con pdflatex?

    Come ti ho detto si può fare. Ivan ha ribadito che l’ho già fatto per la sua classe suftesi e il font Porson.

    Certo non puoi scalare i font usando il comando \renewcommand il cui unico argomento facoltativo lecito è il numero degli argomenti che possono essere gestiti dal comando che stai ridefinendo.

    Forse si potrebbe definre un comando che inserisce il fattore di scala nella descrizione del font; non ci ho mai provato, ma come dice Ivan non serve modificare una Ferrari per andare sullo sterrato. Lui propende per unHummer; io propoendo per un lavoretto sporco, da non imitare, ma che per un dato documento può servire.

    Assumo che tu stia usando la codifica T1 per tutti i latin modern compreso il teletype a spaziatura variabile. Allora bisogna modificare il file t1lmvtt.fd. Non serve andarlo a cercare sul tuo disco, perché qui te lo do già modificato; ti copia questo codice e salvalo con il nome t1lmvtt.fd nella cartela del tuo documento.`% This file belongs to the Latin Modern package. The work is released
    % under the GUST Font License. See the MANIFEST-Latin-Modern.txt and
    % README-Latin-Modern.txt files for the details. For the most recent version of
    % this license see http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt
    % or http://tug.org/fonts/licenses/GUST-FONT-LICENSE.txt

    % QUESTO FILE E' MODIFICATO RISPETTO ALL'ORIGINALE MA, MALGRADO LA LICENZA NE CONSENTA
    % LA MAODIFICA, NON E' POSSIBILE CAMBIARGLI IL NOME COME LA LICENZA RICHIEDE.
    %
    % ******************************************
    % * LO SI USI A PROPRIO RISCHIO E PERICOLO *
    % ******************************************

    \ProvidesFile{t1lmvtt.fd}[2009/10/30 v1.6 Font defs for Latin Modern]
    \DeclareFontFamily{T1}{lmvtt}{}

    \ifx\lmtt@use@light@as@normal\@empty
    % macro defined, so we use the light variant as medium (m), and
    % medium as semi-bold (sb):
    \DeclareFontShape{T1}{lmvtt}{sb}{n}
    {<-> ec-lmvtt10}{}
    \DeclareFontShape{T1}{lmvtt}{sb}{sl}
    {<-> ec-lmvtto10}{}
    \DeclareFontShape{T1}{lmvtt}{sb}{it}
    {<->sub*lmvtt/m/sl}{}
    %%%%%%%% light (l) and dark (b) variants:
    \DeclareFontShape{T1}{lmvtt}{m}{n}
    {<-> ec-lmvtl10}{}
    \DeclareFontShape{T1}{lmvtt}{m}{sl}
    {<-> ec-lmvtlo10}{}
    \DeclareFontShape{T1}{lmvtt}{m}{it}
    {<->sub*lmvtt/l/sl}{}

    \else
    % usual setup of variants:
    \DeclareFontShape{T1}{lmvtt}{m}{n}
    {<-> [0.95] ec-lmvtt10}{}
    \DeclareFontShape{T1}{lmvtt}{m}{sl}
    {<-> [0.95] ec-lmvtto10}{}
    \DeclareFontShape{T1}{lmvtt}{m}{it}
    {<->sub*lmvtt/m/sl}{}
    %%%%%%%% light (l) and dark (b) variants:
    \DeclareFontShape{T1}{lmvtt}{l}{n}
    {<-> [0.95] ec-lmvtl10}{}
    \DeclareFontShape{T1}{lmvtt}{l}{sl}
    {<-> [0.95] ec-lmvtlo10}{}
    \DeclareFontShape{T1}{lmvtt}{l}{it}
    {<->sub*lmvtt/l/sl}{}
    \fi
    % bold is always bold (b):
    \DeclareFontShape{T1}{lmvtt}{b}{n}
    {<-> [0.95] ec-lmvtk10}{}
    \DeclareFontShape{T1}{lmvtt}{b}{sl}
    {<-> [0.95] ec-lmvtko10}{}
    \DeclareFontShape{T1}{lmvtt}{b}{it}
    {<->sub*lmvtt/b/sl}{}
    \DeclareFontShape{T1}{lmvtt}{bx}{n}
    {<->ssub*lmvtt/b/n}{}
    \DeclareFontShape{T1}{lmvtt}{bx}{sl}
    {<->ssub*lmvtt/b/sl}{}
    \DeclareFontShape{T1}{lmvtt}{bx}{it}
    {<->sub*lmvtt/b/sl}{}
    \endinput
    %%
    %% End of file `t1lmvtt.fd'.`

    Vedrai che fra parentesi quadre tro 0.95; sostituiscine il valore con quello che più si adatta con gli altri tuoi font. Qui ti metto un esempio minimo compilabile.`\documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \renewcommand*\ttdefault{lmvtt}

    \begin{document}
    \sffamily Questo testo viene scritto con un font lineare, mentre
    \ttfamily questo testo viene scritto in teletype a spaziatura variabile.
    \end{document}`

    Se al posto di 0.95 ci metti 0.5 vedi un cambio drammatico…; ovviamente non devi usare un fattore di scala così piccolo, ma te lo dicevo solo per mostrarti l’effetto di quei comandi.
    Siccome non mi hai detto quali altri font stai usando con questi lmvtt, non sono ingrado di mettere qualche altra cosa al posto di 0.95, che ho messo solo a titolo d’esempio.

    Questa non è un Hummer, ma è una comune vetture con i pneumatici MD (mud and snow).

    [EDIT] Aggiunta di una modifica.

    Ti propongo una modifica che ti rende il lavoro più semplice.

    Prendi il file t1lmvtt.fd e sostituisci il valore 0.95 in tutte le sue posizioni con la macro [tt]\lmvtt@scale@factor[/tt]. poi prova il seguente esempio minimo compilabile:`\documentclass{article}
    % Define commands for setting a scaling factor for Latin Modern Variable teletype fonts
    % (only T1 encoded)
    \usepackage{etoolbox}
    % Provide a default value
    \csdef{lmvtt@scale@factor}{1.0}
    % define a setting command
    \newcommand*\scalelmvttfonts[1]{\csdef{lmvtt@scale@factor}{#1}}

    \usepackage[T1]{fontenc}
    % before first mention of lmvtt fonts set a value different from default
    \scalelmvttfonts{0.95}
    \usepackage{lmodern}
    \renewcommand*\ttdefault{lmvtt}

    \begin{document}

    \sffamily Questo testo viene scritto con un font lineare, mentre \ttfamily questo testo viene scritto in teletype a spaziatura variabile.
    \end{document}`

    Semplicemente usando la macro \scalelmvttfonts con un argomento diverso da 1.0 puoi vedere i risultati senza bisogno di modificare ogni volta il file .fd.

    Va da sé che il file .fd, comunque, deve restare confinato nella cartella del documento dove ne vuoi fare uso.

    Go to top